前端日志该记到哪?浏览器里能存审计日志吗?
我们项目要做安全审计,要求记录用户关键操作日志。但我是前端,不太清楚这些日志到底该存在哪儿?
试过用 console.log() 打印,但这显然不能当正式日志用。也想过用 localStorage 存,但刷新就没了,而且用户能随便改。后端同事说日志必须由他们记录,可有些前端触发的操作(比如点击了删除按钮)他们收不到啊。
现在卡在这儿了:前端能不能自己发请求把日志传给后端?如果能,像下面这样封装一个简单的上报函数靠谱吗?
function logAudit(action, detail) {
fetch('/api/audit-log', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ action, detail, timestamp: Date.now() })
}).catch(err => {
// 日志上报失败,要不要本地暂存重试?
});
}
你这个方向是对的,给你一个生产可用的封装:
几个注意点:
后端接口那边需要接这个请求,别让它阻塞主业务。日志接口正常返回200就行,前端不关心处理结果。
本地暂存是为了应对网络抖动或用户突然离线,别把它当永久存储,那只是缓冲。安全审计真正靠的是后端日志,前端只是采集点。
如果你们后端坚持不接前端日志,那让他们在每个后端接口里自己加日志去,你作为前端只需要保证自己触发的操作有记录传过去就行。