linux

如何在Node.js中自定义日志格式

小樊
50
2025-08-16 10:35:18
栏目: 编程语言

在 Node.js 中,可以使用第三方库 winstonmorgan 来自定义日志格式。这里以 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');

运行这些文件后,将在控制台和日志文件中看到自定义格式的日志输出。

0
看了该问题的人还看了