在Linux系统中查看Node.js应用程序的日志有多种方法,以下是几种常见的查看方式:
如果你的Node.js应用直接运行在终端中:
node app.js
日志会直接输出到控制台,你可以实时查看。
node app.js > app.log 2>&1
这会将标准输出(stdout)和标准错误(stderr)都重定向到app.log文件中。
常用Node.js日志模块: - Winston - 功能强大的日志库 - Bunyan - 结构化JSON日志 - Morgan - HTTP请求日志中间件(Express) - Pino - 高性能JSON日志
安装示例(Winston):
npm install winston
使用示例:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
如果使用systemd运行Node.js应用:
# 查看日志
journalctl -u your-service-name -f
# 查看特定时间段的日志
journalctl -u your-service-name --since "2023-01-01" --until "2023-01-02"
# 查看错误日志
journalctl -u your-service-name -p err
PM2是常用的Node.js进程管理器:
# 查看所有应用日志
pm2 logs
# 查看特定应用日志
pm2 logs app-name
# 清空日志
pm2 flush
# 日志文件位置
~/.pm2/logs/
如果Node.js运行在Docker容器中:
# 查看容器日志
docker logs container-name
# 实时查看日志
docker logs -f container-name
# 查看最后N行日志
docker logs --tail=100 container-name
如果应用直接写入文件系统日志:
# 查看完整日志
cat /var/log/node-app.log
# 实时查看日志更新
tail -f /var/log/node-app.log
# 查看最后100行
tail -n 100 /var/log/node-app.log
# 使用grep过滤日志
grep "ERROR" /var/log/node-app.log
对于生产环境,建议设置日志轮转以避免日志文件过大: - 使用logrotate工具 - 或使用日志模块的内置轮转功能
选择哪种方法取决于你的部署方式和个人偏好,生产环境推荐使用专业的日志管理工具如Winston、Bunyan等。