如何使用Winston库创建多个日志文件并在该文件中追加日志

时间:2018-07-26 20:48:06

标签: node.js winston

我正在节点中使用Winston库获取错误日志。现在,我要动态创建多个记录器文件。

我使用的代码是this

const fs = require("fs");
const winston = require("winston");
const logDir = "log";

if (!fs.existsSync(logDir)) {
    fs.mkdirSync(logDir);
}

const tsFormat = () => (new Date()).toLocaleTimeString();
module.exports = logger = winston.createLogger({
    transports: [
        new (winston.transports.Console)({
            format: winston.format.combine(
                winston.format.colorize(),
                winston.format.timestamp(),
                winston.format.align(),
                winston.format.simple(),
            ),
            level: 'info'
        }),
        new (require("winston-daily-rotate-file"))({
            filename: `${logDir}/-results.log`,
            format: winston.format.combine(
                winston.format.timestamp(),
                winston.format.json(),
            )
        }),
        new winston.transports.File({ 
            filename: 'log/error.log', 
            level: 'error',
            format: winston.format.combine(
                winston.format.timestamp(),
                winston.format.simple(),
            )
        }),
    ]
});

我需要通过传递记录器调用文件名

logger.info(`Test info Log!`,'filename');

它应该以该文件名记录文件。如果文件不存在,它将创建该文件,并将所有内容附加到该文件中

1 个答案:

答案 0 :(得分:0)

您要在此处实现的目标是通过指定文件名来动态创建日志文件。

不可能是哪个原因,因为我们必须在winston.js文件中实例化记录器实例时声明文件和记录器选项。

这里:

module.exports = logger = winston.createLogger({}

您不能随时更新它!

希望我已经清除了您的想法!