在Linux系统中,Node.js应用程序的日志级别设置可以通过多种方式实现,具体取决于你使用的日志框架和运行环境。以下是一些常见情况的设置方法:
使用Node.js内置的console
模块:
Node.js内置的console
模块提供不同级别的日志输出:
console.error('错误信息'); // 错误级别
console.warn('警告信息'); // 警告级别
console.log('普通信息'); // 信息级别
console.info('信息'); // 信息级别
console.debug('调试信息'); // 调试级别
要控制输出级别,可以创建自定义logger或使用环境变量过滤:
const logLevel = process.env.LOG_LEVEL || 'info';
function log(level, ...args) {
const levels = ['error', 'warn', 'info', 'debug'];
if (levels.indexOf(level) <= levels.indexOf(logLevel)) {
console[level](...args);
}
}
使用Winston日志库:
Winston是Node.js中流行的日志库,支持多级别日志:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info', // 默认级别
format: winston.format.simple(),
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
// 通过环境变量设置级别
logger.level = process.env.LOG_LEVEL || 'info';
// 使用不同级别
logger.error('错误信息');
logger.warn('警告信息');
logger.info('普通信息');
logger.debug('调试信息');
使用Bunyan日志库:
Bunyan是另一个流行的结构化日志库:
const bunyan = require('bunyan');
const logger = bunyan.createLogger({
name: 'myapp',
level: 'info'
});
logger.error('错误信息');
logger.warn('警告信息');
logger.info('普通信息');
logger.debug('调试信息');
使用PM2进行日志管理:
如果你使用PM2来管理Node.js应用程序,可以通过PM2的配置文件或命令行参数来设置日志级别。例如,使用PM2的配置文件ecosystem.config.js
:
module.exports = {
apps: [{
name: 'my-app',
script: 'app.js',
env: {
NODE_ENV: 'development',
LOG_LEVEL: 'debug' // 设置日志级别
},
env_production: {
NODE_ENV: 'production',
LOG_LEVEL: 'info' // 生产环境日志级别
}
}]
};
然后使用PM2启动应用程序:
pm2 start ecosystem.config.js --env production
使用环境变量设置日志级别:
在Linux中运行应用时,可以通过环境变量设置日志级别:
LOG_LEVEL=debug node app.js
或者导出环境变量:
export LOG_LEVEL=warn
node app.js
日志轮转配置:
对于生产环境,通常需要配置日志轮转以避免单个日志文件过大。可以使用pm2-logrotate
模块来管理日志轮转:
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 5
pm2 set pm2-logrotate:workerInterval 2
通过以上方法,你可以在Linux环境下为Node.js应用程序设置灵活的日志级别和有效的日志管理策略。