繁体   English   中英

Winston javascript logger 正在创建两个单独的日志文件。 如何将所有条目记录到一个文件中?

[英]Winston javascript logger is creating two separate log files. How do I log all entries into a single file?

我正在尝试使用Winstonwinston-daily-rotate-file将我所有的控制台/日志输出从 node.js 服务器记录到一个文件中,该文件将(希望)每天在午夜轮换。

我遇到的问题是未处理的异常似乎会生成一个新的日志文件,而不是写入现有的日志文件。 有关复制行为,请参阅下面的示例代码。 如何将所有输出保存到单个日志文件以及输出到控制台? 目前,控制台方面似乎还不错,但请随时指出我遗漏的任何明显内容。

  • 操作系统:Win 10
  • 节点:v12.16.0
  • npm:v6.13.4
  • 温斯顿:v3.2.1
  • winston-daily-rotate-file: v4.4.2
    const winston = require('winston');
    const DailyRotateFile = require('winston-daily-rotate-file');
    const path = require('path');

    var logger = new (winston.createLogger)({
        transports: [
            new (winston.transports.Console)({
                format: winston.format.combine(
                    winston.format.timestamp(),
                    winston.format.colorize({ all: true }),
                    winston.format.printf((info) => {
                        const {
                            timestamp, level, message
                        } = info;
                        return `${timestamp} - ${level}: ${message}`;
                    }),
                ),
                handleExceptions: true
             }),
            new DailyRotateFile({
                name: 'file',
                datePattern: 'YYYY-MM-DDTHH-mm-ss',
                handleExceptions: true,
                format: winston.format.combine(
                    winston.format.timestamp(),
                    winston.format.printf((info) => {
                        const {
                            timestamp, level, message
                        } = info;
                        return `${timestamp} - ${level}: ${message}`;
                    }),
                ),
                filename: path.join(__dirname, 'logs', '%DATE%.log')
            }),
        ]
    });

    logger.info("This is an info message");
    logger.error("This is an error message");
    setTimeout(() => {throw new Error('oh dear!')}, 5000);

我的问题是由 datePattern 选项引起的。 winston-daily-rotate-file 使用此模式来确定文件轮换的频率。 由于我在模式中包含了秒,它正在寻找一个具有当前时间戳(到最近的秒)的文件,并在写入文件之前创建它。

要获取每日文件,我只需要更改

datePattern: 'YYYY-MM-DDTHH-mm-ss'

datePattern: 'YYYY-MM-DD'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM