在Ubuntu环境下,您可以使用winston库来自定义Node.js应用程序的日志格式。以下是详细步骤:
首先,您需要在项目中安装winston库。您可以使用npm或yarn来安装:
npm install winston 或者
yarn add winston 创建一个新的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; 在您的应用程序中使用这个日志记录器。
const logger = require('./logger'); logger.info('Hello, world!'); logger.error('Something went wrong!'); 确保您的应用程序可以正常运行,并且日志文件被正确创建。
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应用程序的日志格式。