CentOS上Node.js日志如何查看与分析
作者:WeekendLife
时间:2026-05-02
浏览:0
CentOS上Node.js日志查看与分析 排查问题、监控应用状态,日志是关键。在CentOS服务器上管理Node.js应用,掌握日志的定位、查看和分析方法,是每一位开发者和运维人员的必修课。下面,我们就来系统地梳理一下。 一 定位日志位置 首先,得知道日志在哪。Node.js应用的日志输出方式多样
CentOS上Node.js日志查看与分析
排查问题、监控应用状态,日志是关键。在CentOS服务器上管理Node.js应用,掌握日志的定位、查看和分析方法,是每一位开发者和运维人员的必修课。下面,我们就来系统地梳理一下。
一 定位日志位置
首先,得知道日志在哪。Node.js应用的日志输出方式多样,常见的位置和查找方式有:
- 常见位置与方式:
- 应用内日志文件: 最简单直接的方式。日志通常位于项目目录下的
logs/文件夹,或者开发者自定义的路径中,比如app.log、error.log、combined.log。 - 标准输出重定向: 如果启动命令类似
node app.js > logs/app.log 2>&1 &,那么标准输出和错误输出都会被重定向到指定的文件。 - systemd 服务日志: 对于通过systemd托管的服务,使用
journalctl -u your-nodejs-service-name命令查看其所有输出。 - 系统日志目录: 部分应用会遵循约定,将日志写入
/var/log/目录下的自定义子目录。 - 快速定位进程打开的日志文件: 如果以上都不确定,可以先通过
ps -ef | grep node找到应用的进程ID(PID),再用lsof -p命令查看该进程打开了哪些文件,从中找出日志文件路径。
- 应用内日志文件: 最简单直接的方式。日志通常位于项目目录下的
二 快速查看与常用命令
找到日志后,如何高效地查看和检索信息?这些命令能帮上大忙。
- 实时查看:
- 文件:
tail -f /var/log/nodejs/app.log,实时追踪日志尾部的新内容。 - systemd 服务:
journalctl -u nodejs.service -f,实时查看服务的日志流。 - PM2 应用:
pm2 logs my-app,直接查看由PM2管理的应用日志。
- 文件:
- 检索与统计:
- 关键字过滤:
grep ‘error’ /var/log/nodejs/app.log,快速筛选出所有错误行。 - 错误数量:
grep ‘error’ /var/log/nodejs/app.log | wc -l,统计错误出现的次数。 - 分页浏览:
less /var/log/nodejs/app.log,方便上下翻页查看大文件。
- 关键字过滤:
- 按时间窗口查看(systemd):
- 最近 10 分钟:
journalctl -u nodejs.service --since “10 minutes ago” - 指定日期:
journalctl -u nodejs.service -S “2025-10-30” -U “2025-10-30 23:59:59”
- 最近 10 分钟:
三 结构化日志与运行方式
原始的文本日志不利于机器解析。采用结构化日志,能让后续的分析事半功倍。
- 使用结构化日志库: 推荐使用 Winston、Pino、Bunyan、Log4js 等库。它们能统一日志字段,如 timestamp(时间戳)、level(级别)、msg(消息)、trace_id/requestId(请求ID)、pid(进程ID),极大方便了检索与聚合。
- 示例(Winston,按级别分文件并输出到控制台):
- 安装:
npm i winston - 配置:
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’ }),new winston.transports.Console()]});
- 安装:
- 运行与采集:
- 直接运行并重定向:
node app.js > logs/app.log 2>&1 - PM2:
pm2 start app.js --name my-app,查看日志:pm2 logs my-app - systemd: 在服务单元文件中配置 StandardOutput/StandardError,将其指向文件或 journald。
- 直接运行并重定向:
四 日志轮转与保留策略
日志文件会不断增长,必须有一套轮转和清理机制,以防磁盘被撑满。
- 应用内轮转(与系统配合更灵活): 例如使用 winston-daily-rotate-file 插件,可以实现按天切分、自动压缩、保留指定天数。
- 示例:
const DailyRotateFile = require(‘winston-daily-rotate-file’);const transport = new DailyRotateFile({filename: ‘logs/myapp-%DATE%.log’,datePattern: ‘YYYY-MM-DD’,zippedArchive: true,maxFiles: ‘14’});
- 示例:
- 系统级轮转(通用、与运行方式无关): 配置系统的 logrotate 工具,编辑
/etc/logrotate.d/nodejs_app文件。- 示例:
/path/to/your/nodejs/app/logs/*.log {dailyrotate 7compressmissingoknotifemptycreate 0640 root root}
- 验证:
sudo logrotate -f /etc/logrotate.d/nodejs_app
- 示例:
- PM2 内置轮转(插件):
- 安装:
pm2 install pm2-logrotate - 配置示例:
pm2 set pm2-logrotate:max_size 10M、pm2 set pm2-logrotate:retain 7、pm2 set pm2-logrotate:compress true、pm2 set pm2-logrotate:rotateInterval “0 0 * * *”。
- 安装:
五 集中式日志与可视化分析
当服务器和应用数量增多时,分散的日志难以管理。集中式日志系统是必然选择。
- 方案选型: 经典的 ELK(Elasticsearch + Logstash + Kibana)栈,或其变体 EFK(将 Logstash 替换为 Fluentd),以及 Graylog 都是成熟的选择。
- 轻量采集: 使用 Filebeat 轻量级采集器读取应用日志,并发送到 Logstash 或直接到 Elasticsearch。
- Filebeat 示例(/etc/filebeat/filebeat.yml):
filebeat.inputs:type: logenabled: truepaths:/var/log/nodejs/app.log
output.logstash:hosts: [“localhost:5044”]
- Filebeat 示例(/etc/filebeat/filebeat.yml):
- Logstash 简单解析(按 JSON 或 Grok):
input { file { path => “/var/log/nodejs/app.log” start_position => “beginning” } }filter {json { source => “message” }date { match => [“timestamp”, “ISO8601”] }}output { elasticsearch { hosts => [“localhost:9200”] index => “nodejs-logs-%{+YYYY.MM.dd}” } }
- Kibana: 访问
http://,创建索引模式:5601 nodejs-logs-*,之后便可以在 Discover 页面中按level: error等条件进行检索,在 Visualize/Dashboard 模块构建错误趋势、响应时间等可视化图表。
作者最新文章
打印机暂停打印的解决方法及恢复正常打印步骤
2026-09-22 14:32
华强北手机全线涨价:涨幅400-1500元,存储成本推高售价
2026-09-08 19:22
PDF转XML操作步骤与在线工具使用指南
2026-09-03 10:06
如何把多个PPT转成PDF?批量转换PDF的方法有哪些?
2026-09-02 19:32
CorelDRAW 2021图片虚化与边缘处理教程
2026-09-02 15:44
上一篇:
thinkphp能兼容centos吗
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































