如何为 winston 设置唯一的文件名?
How to put unique file name for winston?
我有 10 个文件,我通过在每个文件中放置这 2 行来为每个文件编写日志。
winston = require('winston');
winston.add(winston.transports.File, { filename: 'project.log' });
然后我得到了错误
throw new Error('Transport already attached: ' + instance.name + ", assign a different name");
^
Error: Transport already attached: file, assign a different name
我想要我所有控制器(node.js)的日志只在一个 file.Can 任何人帮助 me.Thanks。
只需将传递的对象上的 filename
属性 更改为唯一的新 winston.transports.File
。
例如,如果您将前两行添加到 10 个单独的文件中,您可以执行类似这样的操作,这会将 _${__filename}
添加到 winston 创建的日志文件的名称中。 __filename
由 Node Module Wrapper 在运行时提供给每个模块。
const winston = require('winston')
winston.add(winston.transports.File, {filename: `project_${__filename}.log`})
如果您希望将所有内容都放在一个文件中,您可以创建一个代表记录器的新模块。
// logger.js
const winston = require('winston')
const logger = new winston.Logger({
transports: [ new winston.transports.File({filename: 'project.log'}) ]
})
module.exports = logger
然后你可以在你的控制器中要求 logger.js
// controller.js
const logger = require('./logger')
// logs "[controller.js] test-log-entry" to project.log as an info entry
logger.info(`[${__filename}] test-log-entry')
我有 10 个文件,我通过在每个文件中放置这 2 行来为每个文件编写日志。
winston = require('winston');
winston.add(winston.transports.File, { filename: 'project.log' });
然后我得到了错误
throw new Error('Transport already attached: ' + instance.name + ", assign a different name");
^
Error: Transport already attached: file, assign a different name
我想要我所有控制器(node.js)的日志只在一个 file.Can 任何人帮助 me.Thanks。
只需将传递的对象上的 filename
属性 更改为唯一的新 winston.transports.File
。
例如,如果您将前两行添加到 10 个单独的文件中,您可以执行类似这样的操作,这会将 _${__filename}
添加到 winston 创建的日志文件的名称中。 __filename
由 Node Module Wrapper 在运行时提供给每个模块。
const winston = require('winston')
winston.add(winston.transports.File, {filename: `project_${__filename}.log`})
如果您希望将所有内容都放在一个文件中,您可以创建一个代表记录器的新模块。
// logger.js
const winston = require('winston')
const logger = new winston.Logger({
transports: [ new winston.transports.File({filename: 'project.log'}) ]
})
module.exports = logger
然后你可以在你的控制器中要求 logger.js
// controller.js
const logger = require('./logger')
// logs "[controller.js] test-log-entry" to project.log as an info entry
logger.info(`[${__filename}] test-log-entry')