首页 > 解决方案 > 如何使用 Winston 库在 Node.js 中每天将 logrotate 日志记录到单独的文件中

问题描述

我有一个 nodejs 应用程序。我需要在这个程序中记录每个事件,为此我使用 winston 库。我正在尝试为每天创建一个日志文件。

所有的日志都应该每天分开。这些文件的名称应该是当天的日期。

例如,今天我打开我的程序并执行获取请求。此操作应保存为我的计算机上的文件(例如在我的桌面上),文件名应为 17/10/2019.log。有什么建议吗?

编辑:解决了!!

require('winston-daily-rotate-file');
const logDir= 'C://Users/Desktop/LogFiles';

var options = {
         file: {
           level:'info',
           filename: path.resolve(`${logDir}/${new Date().getFullYear().toString()} - ${new Date().getMonth()+1}/%DATE%.log`),
           datePattern: 'YYYY-MM-DD',
           timestamp: new Date()
          };


     let logger = winston.createLogger({
      level:'info', 
      format: winston.format.combine(
        winston.format.printf(info => { return `${info.timestamp} || ${info.level} || Message: ${info.message}`; })
 ),

     transports: [
       new winston.transports.DailyRotateFile(options.file)
        ],  
           exitOnError: false,
    });

标签: node.jsloggingwinston

解决方案


you could use a Transport for Winston, checkout https://github.com/winstonjs/winston-daily-rotate-file

it can do all what you're asking for and more.


推荐阅读