我遵循了一个教程,在我的Express应用中设置Winston(2.x)默认记录器。当更新到当前版本的Winston(3.0.0)时,我在添加传输器时遇到了问题。我遵循了latest docs,但仍然在控制台中收到通知,根本没有创建任何日志文件:
[winston]尝试写没有传输的日志
logging.js
const winston = require('winston');
module.exports = function () {
const files = new winston.transports.File({ filename: 'logfile.log' });
const myconsole = new winston.transports.Console();
winston.add(myconsole);
winston.add(files);
}
index.js
const winston = require('winston');
...
require('./logging');
winston.info("Give some info");
[winston]尝试写没有传输的日志 {“ message”:“提供一些信息”,“ level”:“信息”}
我在做什么错了?
答案 0 :(得分:6)
在Winston 3中,您需要创建一个logger
对象,然后向其中添加transport
。
温斯顿3号有很多examples,但为了适应readme,请执行以下操作:
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'logfile.log' })
]
});
logger.info('it works!!');
答案 1 :(得分:1)
我也有类似的问题。如果我没记错的话,我必须在我的index.js中将需求作为函数调用。
margin-top
答案 2 :(得分:0)
如果要在Winston v3中使用默认记录器,则只需将这段代码添加到主文件中
const winston = require('winston')
winston.add(new winston.transports.File({ filename: 'logfile.log' }))
答案 3 :(得分:0)
我遇到了同样的问题,仅查看文档,我就可以通过添加以下代码在文件中写入日志。
1。创建文件logger.js并粘贴以下代码
// => logger.js
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
defaultMeta: { service: 'user-service' },
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
if (process.env.NODE_ENV !== 'production') {
logger.add(new winston.transports.Console({
format: winston.format.simple()
}));
}
// just add the below to write into a file
winston.add(logger);
2。要求将其放入您的app.js文件
// => app.js
require('./middlewares/logger');
3。只需在您的端点之一的函数中编写以下代码即可对其进行测试。
router.get('/', async (req, res) => {
throw new Error('Resource not found');
res.send({ error: 'Resource not found' });
});
Et Voilaçamarche。进入错误日志文件,在此处找到此消息。
{"message":"500 - Resource not found - /api/genres - GET - ::1","level":"error"}