【问题标题】:How to do logrotate logs into separate files daily in Node.js using Winston library如何使用 Winston 库在 Node.js 中每天将 logrotate 日志记录到单独的文件中
【发布时间】:2026-02-23 11:35:01
【问题描述】:

我有一个 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.js logging winston


    【解决方案1】:

    你可以使用 Winston 的交通工具,结帐https://github.com/winstonjs/winston-daily-rotate-file

    它可以满足您的所有要求,甚至更多。

    【讨论】:

    • 我读了,但我找不到如何将它们保存为一个单独的文件
    • 指定datePattern: "YYYY-MM-DD" 将在每天午夜轮换文件。如果您不设置 maxFiles 它将无限期保留所有日志文件。
    • 谢谢,但我实际上想将每日文件保存在我的桌面上。例如,我今天完成的请求将在我的桌面上保存为 18/10/2019.log。明天当我再次发出一些请求时,它应该再次在桌面上记录为 19/10/2019.log。我做不到。
    最近更新 更多