Ubuntu下Node.js日志实时查看实用指南
一 常用实时查看方式
tail -f /var/log/myapp.logtail -f app.log | grep --line-buffered "error"(使用 –line-buffered 保证实时输出)sudo apt-get install multitailmultitail app.log 或 multitail app.log error.logwatch -n 1 'tail -n 50 app.log'(每 1 秒刷新并显示末尾 50 行)二 使用PM2运行时的日志查看
pm2 logspm2 logs <app_name>pm2 logs --jsonpm2 logs <app_name> --lines 1000pm2 start app.js --timepm2 start app.js --log /path/to/logfilepm2 start app.js -i max --merge-logspm2 flush(全部)或 pm2 flush <app_name>(单个)pm2 monit三 作为systemd服务运行时的日志查看
journalctl -u your-nodejs-service-name -fjournalctl -u your-nodejs-service-name --since "10 min ago" -f四 日志轮转与长期管理
sudo nano /etc/logrotate.d/yourapp/path/to/your/logfile.log {
daily
rotate 7
compress
delaycompress
notifempty
create 640 root adm
}
/etc/rsyslog.conf 或 /etc/rsyslog.d/50-default.conf 添加规则(示例):if $programname == 'yourapp' then /var/log/yourapp.log
& stop
sudo systemctl restart rsyslogtail -f /var/log/yourapp.log五 在Node.js中输出更易实时查看的日志
tail -f 实时查看):const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.printf(({ timestamp, level, message }) => {
return `${timestamp} [${level.toUpperCase()}]: ${message}`;
})
),
transports: [
new winston.transports.File({ filename: 'app.log' }),
new winston.transports.Console()
]
});
logger.info('Server started on port 3000');
logger.error('Database connection failed');
--time 或日志库的时间戳,能在实时查看时快速定位问题