node.js - 如何在 NodeJS(Linux)中写入日志文件?
问题描述
我的简单脚本(test.js):
const x = 10;
console.log('Number X = ' + x);
throw new Error('emulating some error in the code');
console.log('Finish');
例如,我用命令开始我的脚本: node test.js >> log.txt
我只能在控制台中看到错误消息。错误未写入 log.txt
我如何也可以在 log.txt 中写入错误消息?
解决方案
这一定正是您正在寻找的:
// First part: Writing to 'log.txt' file
var fs = require('fs');
var util = require('util');
var logFile = fs.createWriteStream('log.txt', { flags: 'a' });
// Or 'w' to truncate the file every time the process starts.
var logStdout = process.stdout;
console.log = function () {
logFile.write(util.format.apply(null, arguments) + '\n');
logStdout.write(util.format.apply(null, arguments) + '\n');
}
console.error = console.log;
// Second part: creating function just to generate an error
function div (x, y, done) {
if (y === 0)
return done (Error ('Cannot divide by zero'))
else
return done (null, x / y)
}
div (6, 0, function (err, result) {
// *always* check for err
if (err)
console.log ('error', err.message, err.stack)
else
console.log ('result', result)
})
代码的第一部分用于写入“log.txt”文件,第二部分仅用于生成错误。希望这会有所帮助:)
推荐阅读
- java - 关于 DateTimeZone.forID 的两个不同结果
- javascript - Javascript 弹出框(警报、确认和提示)是“文档”的一部分还是“浏览器”的一部分(客户端)
- r - R data.table 添加一列
- android-room - Andorid room 两个primaryKeys,一个autoGenerate
- python-3.x - 为什么会这样打印
- laravel - Laravel 选择查询,从给定日期起 30 天
- session - 单击注销时如何从所有活动会话中注销?
- r - 使用向量列表作为列索引按列拆分数据帧
- javascript - 如果在时间选择器中选择了相同的日期和时间,则触发警报?
- java - springboot升级后出现“NoSuchMethodError getHttpServletMapping”