在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应用程序的日志格式。