我是否可以配置console.log,以便将日志写入文件,而不是打印在控制台中?
当前回答
你可以使用nodejs的Console构造函数
const mylog = new console.Console(
fs.createWriteStream("log/logger.log"),
fs.createWriteStream("log/error.log")
);
然后你就可以像使用普通的控制台类一样使用它了,例如:
mylog.log("Ok!"); // Will be written into 'log/logger.log'
mylog.error("Bad!"); // Will be written into 'log/error.log'
其他回答
重写console.log是正确的方法。但是要让它在所需的模块中工作,还需要导出它。
module.exports = console;
为了节省自己写日志文件的麻烦,旋转和东西,你可以考虑使用一个简单的记录器模块,如温斯顿:
// Include the logger module
var winston = require('winston');
// Set up log file. (you can also define size, rotation etc.)
winston.add(winston.transports.File, { filename: 'somefile.log' });
// Overwrite some of the build-in console functions
console.error = winston.error;
console.log = winston.info;
console.info = winston.info;
console.debug = winston.debug;
console.warn = winston.warn;
module.exports = console;
Rudy Huynh的解决方案对我来说非常有效。我添加了一点,让它吐出带有今天日期和时间的文件。
var dateNow = new Date();
var timeNow = dateNow.getHours() + '-' + dateNow.getMinutes();
var logPath = "log/" + dateNow.toDateString() + ' -' + ' Start Time - ' + timeNow + ".log"
consoleLogToFile({
logFilePath: logPath
});
它不是很优雅,但这样它将保存不同的,易于阅读的日志文件,而不是只是更新相同的“default.log”文件。
如果你正在使用forever来保持节点应用程序运行,那么输入forever list将显示console.log正在写入的日志文件的路径
如果这是针对应用程序的,那么最好使用日志记录模块。这会给你更多的灵活性。一些建议。
·温斯顿https://github.com/winstonjs/winston log4js https://github.com/nomiddlename/log4js-node
如果您正在使用linux,您还可以使用输出重定向。Windows就不太确定了。
node server.js >> file.log 2>> file.log
>> file.log将标准输出重定向到文件
2>> file.log将stderr重定向到文件
其他人使用速记&>>作为stdout和stderr,但它不被我的MAC和ubuntu接受:(
额外:>覆盖,>>追加。
顺便说一下,关于NodeJS日志记录器,我使用pino + pino-pretty logger
推荐文章
- 没有定义Electron require()
- 在摩卡测试时调用异步函数如何避免超时错误:超时超过2000ms
- package.json中属性“private”的目的是什么?
- 用套接字发送消息到指定客户端。IO和node.js
- 当我运行' npm install '时,它返回' ERR!代码EINTEGRITY ' (npm 5.3.0)
- 我如何使用Node.js Crypto创建HMAC-SHA1哈希?
- 如何在package.json中使用“main”参数?
- NPM清洁模块
- 在Node.js中加载基本HTML
- Node.js和CPU密集型请求
- 为什么在节点REPL中没有定义__dirname ?
- 在Node.js中克隆对象
- Node.js中的process.env.PORT是什么?
- js的Mongoose.js字符串到ObjectId函数
- ELIFECYCLE Node.js错误是什么意思?