【发布时间】:2014-01-06 07:09:59
【问题描述】:
您好,我的生产团队有一个要求,我需要每小时创建一次日志,我知道 winston 每天都支持,但这对我没有帮助。 有可能做到这一点吗?
【问题讨论】:
您好,我的生产团队有一个要求,我需要每小时创建一次日志,我知道 winston 每天都支持,但这对我没有帮助。 有可能做到这一点吗?
【问题讨论】:
您可以每小时轮换一次 Winston 日志。您需要以日期模式提供小时 (HH)。
请查看以下示例代码:
var winston = require ('winston');
var path = require ('path');
var transports = [];
transports.push(new winston.transports.DailyRotateFile({
name: 'file',
datePattern: '.yyyy-MM-ddTHH',
filename: path.join("some_path", "log_file_name.log")
}));
var logger = new winston.Logger({transports: transports});
// ... and logging
logger.info("some info log ...", {extraData: 'abc'});
文件名如下:log_file_name.log.2013-12-17T16、log_file_name.log.2013-12-17T17 等
我希望这会有所帮助。
【讨论】:
DailyRotateFile 传输已移至单独的模块 @987654328 @。您只需将该模块添加到您的 package.json 和 require('winston-daily-rotate-file')。我会尽快更新我的答案。
更新 正如@Tom 所提到的,rotating Logs 已移出 winston 并在需要时加载
npm install winston-daily-rotate-file
代码示例
const winston = require('winston')
require('winston-daily-rotate-file');
const path = require('path');
let transports = [];
const { createLogger } = winston;
transports.push(
new winston.transports.DailyRotateFile({
name: 'file',
datePattern: 'YYYY-MM-DD-THH-mm',
filename: path.join(__dirname, 'rotate_logs', 'log_file.log')
})
)
var logger = createLogger({ transports: transports })
如果要测试上述代码的完整示例
dataLog(0)
function dataLog(secondsPassed){
setTimeout(function(){
let dateNow = new Date();
logger.info(`seconds passed ${secondsPassed} and Time is ${dateNow}`);
console.log(`${secondsPassed}`);
if(dataLog != 130){ //when reaches 130 seconds stops logging
dataLog(++secondsPassed);
}
},1000);
}
附图中提到的结果文件
额外:我创建了具有不同用例的winston示例,可能会有所帮助 https://github.com/shivashanmugam/node-lab/blob/master/winston/index.js
【讨论】: