在 Node.js 中,可以使用第三方库 winston
或 morgan
来自定义日志格式。这里以 winston
为例,介绍如何自定义日志格式。
首先,确保已经安装了 winston
:
npm install winston
接下来,创建一个名为 logger.js
的文件,并在其中设置自定义日志格式:
const winston = require('winston');
const customFormat = winston.format((info, opts) => {
// 自定义日志格式
const timestamp = info.timestamp ? `${info.timestamp}` : '';
const level = `[${info.level.toUpperCase()}]`;
const message = info.message;
const stack = info.stack ? `\n${info.stack}` : '';
// 返回自定义格式的日志字符串
return `${timestamp} ${level} ${message}${stack}`;
});
const logger = winston.createLogger({
level: 'info',
format: customFormat,
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
new winston.transports.File({ filename: 'logs/combined.log' }),
],
});
module.exports = logger;
在上面的代码中,我们定义了一个名为 customFormat
的自定义日志格式。这个格式包括时间戳、日志级别、消息和堆栈跟踪(如果存在)。然后,我们创建了一个 winston.Logger
实例,并将自定义格式传递给它。
现在,可以在其他 Node.js 文件中使用这个自定义日志记录器:
const logger = require('./logger');
logger.info('This is an info message');
logger.error('This is an error message');
运行这些文件后,将在控制台和日志文件中看到自定义格式的日志输出。