插件窝 干货文章 Linux下Node.js日志如何查看

Linux下Node.js日志如何查看

日志 查看 使用 Winston 556    来源:    2025-05-06

Linux下查看Node.js日志的方法

在Linux系统中查看Node.js应用程序的日志有多种方法,以下是几种常见的查看方式:

1. 控制台输出日志

如果你的Node.js应用直接运行在终端中:

node app.js

日志会直接输出到控制台,你可以实时查看。

2. 使用重定向保存日志

node app.js > app.log 2>&1

这会将标准输出(stdout)和标准错误(stderr)都重定向到app.log文件中。

3. 使用日志模块

常用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' })
  ]
});

4. 使用systemd管理Node.js服务时的日志

如果使用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

5. 使用PM2管理时的日志

PM2是常用的Node.js进程管理器:

# 查看所有应用日志
pm2 logs

# 查看特定应用日志
pm2 logs app-name

# 清空日志
pm2 flush

# 日志文件位置
~/.pm2/logs/

6. 使用Docker时的日志

如果Node.js运行在Docker容器中:

# 查看容器日志
docker logs container-name

# 实时查看日志
docker logs -f container-name

# 查看最后N行日志
docker logs --tail=100 container-name

7. 直接查看日志文件

如果应用直接写入文件系统日志:

# 查看完整日志
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等。