如何解决winston - 无法将控制台消息记录到文件中
我想使用 Winston 记录来自控制台的所有消息,
并使用 winston-daily-rotate-file
每天存储和删除日志。
在控制台中:
{"level":"info","message":"Feathers application started on localhost","timestamp":"5/26/2021,10:44:36 AM"}
You will see this message every 60 second
You will see this message every 60 second
You will see this message every 60 second
当我查看日志文件 application-2021-05-26.log
时,
{"level":"info",10:44:36 AM"}
You will see this message every 60 second
在日志文件中丢失。
这里有什么问题吗?
app.js
var CronJob = require('cron').CronJob;
const moment = require('moment');
new CronJob('10 * * * * *',function() {
console.log('You will see this message every 60 second');
},null,true,'Asia/Singapore');
logger.js
const { createLogger,format,transports } = require('winston');
const winston = require('winston');
require('winston-daily-rotate-file');
const timezoned = () => {
return new Date().toLocaleString('en-SG',{
timeZone: 'Asia/Singapore'
});
}
const logger = createLogger({
level: 'debug',format: format.combine(
format.splat(),format.simple(),format.json()
),transports: [
new transports.Console(),new winston.transports.DailyRotateFile({
filename: 'application-%DATE%.log',dirname: "logs",datePattern: 'YYYY-MM-DD',zippedArchive: true,maxSize: '20m',maxFiles: '2d',format: winston.format.combine(
winston.format.timestamp({ format: timezoned }),winston.format.json(),),})
],});
module.exports = logger;
解决方法
您应该使用 winston logger
打印 app.js
中的日志
var CronJob = require('cron').CronJob;
const moment = require('moment');
const logger = require('./logger.js'); // check the path
new CronJob('10 * * * * *',function() {
// console.log('You will see this message every 60 second'); -> log on console
logger.log('info','You will see this message every 60 second');
},null,true,'Asia/Singapore');
签出温斯顿文档 here
,您没有在 logger.log
定义中使用 CronJob
函数。
请查看此 Minimum Viable Example 以了解应如何配置代码库以查看控制台和文件上的日志。
当您运行示例时(使用 node index.js
),脚本将向控制台发送日志和项目根目录中的本地文件。
这里是整个脚本供参考:
const { CronJob } = require('cron');
const { createLogger,format,transports } = require('winston');
const moment = require('moment');
require('winston-daily-rotate-file');
const timezoned = () =>
new Date().toLocaleDateString('en-SG',{
timeZone: 'Asia/Singapore'
});
const logger = createLogger({
level: 'debug',format: format.combine(format.splat(),format.simple(),format.json()),transports: [
new transports.Console(),new transports.DailyRotateFile({
filename: 'application-%DATE%.log',dirname: '.',datePattern: 'YYYY-MM-DD',zippedArchive: true,maxSize: '20m',maxFiles: '2d',format: format.combine(
format.timestamp({ format: timezoned }),format.json()
)
})
]
});
const job = new CronJob(
'10 * * * * *',() => logger.debug("You'll see this message every 60 seconds"),'Asia/Singapore'
);
job.start();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。