JS 日志写入失败的原因很多,下面按常见场景给你一个排查清单,你可以对照看看是哪一种。
console.log 本身不会“失败”,但如果:
console.log = null✅ 排查:
console.log('test')
在浏览器控制台看是否输出
const fs = require('fs') // ❌ 浏览器不支持
浏览器 JS 不能直接写本地文件
✅ 解决方案:
localStorage / sessionStorageIndexedDBfetch('/log', { method: 'POST', body: log })
.then(res => res.json())
.catch(err => console.error(err))
如果网络失败,日志就丢了
✅ 排查:
后端没允许前端域名:
Access-Control-Allow-Origin
✅ 后端需配置:
Access-Control-Allow-Origin: *
fs.writeFileSync('./logs/app.log', data)
cwd 下,不是当前 .js 文件✅ 建议:
const path = require('path')
const logPath = path.join(__dirname, 'logs/app.log')
✅ 排查:
ls -l logs/
✅ 正确写法:
fs.appendFileSync('app.log', data + '\n')
throw new Error('xxx')
console.log('log') // ❌ 不会执行
✅ 正确:
try {
...
} catch (e) {
logError(e)
}
例如 winston、pino:
✅ 检查:
logger.level = 'info'
你可以按下面顺序排查:
你可以直接贴出:
我可以一步一步帮你找出具体原因。