ubuntu

Ubuntu环境下如何自定义Node.js日志格式

小樊
46
2025-06-30 23:05:12
栏目: 编程语言

在Ubuntu环境下,您可以使用winston库来自定义Node.js应用程序的日志格式。以下是详细步骤:

1. 安装Winston

首先,您需要在项目中安装winston库。您可以使用npm或yarn来安装:

npm install winston

或者

yarn add winston

2. 创建日志配置文件

创建一个新的JavaScript文件,例如logger.js,并在其中配置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}: ${message}`;
    })
  ),
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
    new winston.transports.File({ filename: 'logs/combined.log' })
  ]
});

if (process.env.NODE_ENV !== 'production') {
  logger.add(new winston.transports.Console({
    format: winston.format.simple()
  }));
}

module.exports = logger;

3. 使用日志记录器

在您的应用程序中使用这个日志记录器。

const logger = require('./logger');

logger.info('Hello, world!');
logger.error('Something went wrong!');

4. 运行应用程序

确保您的应用程序可以正常运行,并且日志文件被正确创建。

node app.js

自定义日志格式

您可以根据需要自定义日志格式。例如,您可以添加更多的字段,如请求ID、用户ID等。

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, customFields }) => {
      return `${timestamp} ${level}: ${message} ${customFields ? JSON.stringify(customFields) : ''}`;
    })
  ),
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
    new winston.transports.File({ filename: 'logs/combined.log' })
  ]
});

if (process.env.NODE_ENV !== 'production') {
  logger.add(new winston.transports.Console({
    format: winston.format.simple()
  }));
}

// 示例:添加自定义字段
logger.info('Hello, world!', { requestId: '12345', userId: 'user123' });
logger.error('Something went wrong!', { requestId: '12345', userId: 'user123' });

module.exports = logger;

通过这种方式,您可以在Ubuntu环境下自定义Node.js应用程序的日志格式。

0
看了该问题的人还看了