作为IT工程师,在Linux环境下管理JavaScript日志需要考虑多个方面。以下是全面的解决方案:
// 不同级别日志
console.log('普通信息');
console.warn('警告信息');
console.error('错误信息');
console.debug('调试信息');
使用Node.js内置模块:
const fs = require('fs');
const util = require('util');
const logFile = fs.createWriteStream('app.log', { flags: 'a' });
function log(...args) {
const timestamp = new Date().toISOString();
logFile.write(`${timestamp} - ${util.format(...args)}\n`);
}
log('应用程序启动');
npm install winston
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.json()
),
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'combined.log' }),
new winston.transports.File({
filename: 'errors.log',
level: 'error'
})
]
});
logger.info('信息日志');
logger.error('错误日志');
npm install bunyan
const bunyan = require('bunyan');
const log = bunyan.createLogger({
name: 'myapp',
streams: [
{
level: 'info',
path: '/var/log/myapp.log'
}
]
});
log.info('应用程序启动');
创建配置文件 /etc/logrotate.d/myapp
:
/var/log/myapp.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 root root
sharedscripts
postrotate
/usr/bin/killall -HUP node
endscript
}
npm install winston-daily-rotate-file
const DailyRotateFile = require('winston-daily-rotate-file');
logger.add(new DailyRotateFile({
filename: 'application-%DATE%.log',
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
}));
配置Logstash接收Node.js日志:
input {
file {
path => "/var/log/myapp.log"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
}
}
npm install pm2 -g
pm2 start app.js --log /var/log/app.log
pm2 logs # 查看日志
pm2 flush # 清空日志
通过以上方案,您可以在Linux环境下高效地管理JavaScript应用程序的日志,确保系统可观测性和故障排查能力。