在Node.js中,可以使用不同的日志库来定制日志格式。这里以Winston和Bunyan为例,介绍如何定制日志格式。
Winston是一个流行的Node.js日志库,可以通过使用不同的传输和格式化器来定制日志格式。首先,需要安装Winston:
npm install winston
然后,可以创建一个Winston日志记录器,并定制日志格式:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
winston.format.printf(({ timestamp, level, message }) => {
return `[${timestamp}] ${level.toUpperCase()}: ${message}`;
})
),
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
new winston.transports.File({ filename: 'logs/combined.log' })
]
});
logger.info('Hello, world!');
在这个例子中,我们使用了winston.format.timestamp来添加时间戳,然后使用winston.format.printf来自定义日志的输出格式。
Bunyan是另一个流行的Node.js日志库,它提供了一种简单的方式来定制日志格式。首先,需要安装Bunyan:
npm install bunyan
然后,可以创建一个Bunyan日志记录器,并定制日志格式:
const bunyan = require('bunyan');
const logger = bunyan.createLogger({
name: 'myApp',
streams: [
{
level: 'info',
stream: process.stdout,
formatter: function (info) {
return JSON.stringify({
timestamp: info.time,
level: info.level,
message: info.msg,
stack: info.stack
});
}
},
{
level: 'error',
path: 'logs/error.log'
},
{
level: 'info',
path: 'logs/combined.log'
}
]
});
logger.info('Hello, world!');
在这个例子中,我们使用了formatter函数来自定义日志的输出格式。
总之,可以根据项目需求选择合适的日志库,并通过配置传输和格式化器来定制日志格式。