温馨提示×

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

小樊
42
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