Debian 上 Node.js 日志的查看与管理
一 日志来源与存放位置
二 常用查看与筛选命令
tail -f /var/log/nodejs/app.logtail -f /var/log/nodejs/*.loggrep "error" /var/log/nodejs/*.logtail -f /var/log/nodejs/app.log | grep --line-buffered "error"journalctl -u nodejs-app.servicejournalctl -u nodejs-app.service --since "2025-12-01" --until "2025-12-20"cat /var/log/syslog 或 less /var/log/syslogless /var/log/syslogsudo nano /var/log/syslog 或 sudo vim /var/log/syslog三 日志轮转与清理
sudo nano /etc/logrotate.d/nodejs/var/log/nodejs/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0644 root root
}
sudo logrotate -d /etc/logrotate.d/nodejssudo logrotate -f /etc/logrotate.d/nodejsyyyy-MM-dd)并配置 daysToKeep、compress 等参数实现按日轮转与保留策略。四 日志库与进程管理配置示例
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
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, Winston!');
logger.error('Something went wrong');
const log4js = require('log4js');
log4js.configure({
appenders: {
console: { type: 'console' },
file: {
type: 'file',
filename: 'logs/app.log',
pattern: 'yyyy-MM-dd',
alwaysIncludePattern: true,
daysToKeep: 90,
compress: true,
},
},
categories: {
default: { appenders: ['console', 'file'], level: 'info' },
},
});
const logger = log4js.getLogger();
logger.info('Hello, Log4js!');
logger.error('Something went wrong');
sudo npm install -g pm2;pm2 start app.js --name "my-app"{
"apps": [
{
"name": "my-app",
"script": "app.js",
"error_file": "logs/err.log",
"out_file": "logs/out.log"
}
]
}
pm2 logs 或 pm2 logs my-app五 故障排查与最佳实践
journalctl -u your-service 查看启动与异常堆栈;tail -f 实时跟踪并结合 grep 检索 error/Exception/timeout 等关键词;pm2 logs 聚合查看 stdout/stderr。