linux

Node.js日志格式怎样定制合适

小樊
55
2025-08-12 10:10:48
栏目: 编程语言

在Node.js中,可以使用不同的日志库来定制日志格式。这里以Winston和Bunyan为例,介绍如何定制日志格式。

  1. Winston

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来自定义日志的输出格式。

  1. Bunyan

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函数来自定义日志的输出格式。

总之,可以根据项目需求选择合适的日志库,并通过配置传输和格式化器来定制日志格式。

0
看了该问题的人还看了