我想为Node / Express api端点使用记录器,这意味着,每当我的api端点被调用并执行函数时,我都希望将日志写入stdout,文件和mongodb(如果可能的话,所有这三个日志) )。
但是,我发现没有方便的方法来登录这三种方法,例如对于bunyan,有一个bunyan Logger,一个bunyan express记录器和一个bunyan-mongodb-logger。他们两个都无法登录到所有三个选项。 似乎没有一种简单的方法可以执行app.use(bunyanlogger)之类的事情,只要我的一条路线注册了传入请求,它就会自动记录... 因此,每当我执行api请求时,都必须将记录器传递给api函数,并对所有api进行某种手动记录(例如logger.info(“ Some route”,“ some Message”))。 / p>
我发现pino记录器(bunyan的简化版本)在执行app.use(pino)时会自动识别传入的请求。但是不知何故不是Bunyan。而对于pino,存在一个问题,就是我无法配置一种简单的方法来登录到除stdout之外的任何其他位置……这非常令人沮丧,难道没有一个简单的node / express记录器可以同时完成这三个操作吗?并基于请求或路由自动记录日志吗?
const pino = require('express-pino-logger')();
app.use(pino); //recognises incoming requests and logs, but no customize streams options?
// BunyanMongoDBLogger has no stream file type? (it does not log to file..)
//and does not recognise incoming requests automatically?
var bunyanMongoDbLogger = require('bunyan-mongodb-logger');
var logger = bunyanMongoDbLogger({
name: 'some-name',
streams: ['stdout', 'mongodb', {
type: 'rotating-file',
level: 'info',
path: 'C:/Users/U500405/Desktop/log/bunyanLog3.log',
period: '1d', // daily rotation
count: 3 // keep 3 back copies
}],
url: 'mongodb://localhost/logger-test',
});
logger.error(new Error('some error'), 'some custom message');
logger.info('Some info');