centos js日志常见问题
导读:CentOS 环境下 Node.js 日志常见问题与排查清单 一 定位与查看日志 确认日志路径:常见位置为项目目录下的 logs/,或系统日志目录 /var/log/(如由 systemd 托管时位于 journald)。不清楚路径时,优...
CentOS 环境下 Node.js 日志常见问题与排查清单
一 定位与查看日志
- 确认日志路径:常见位置为项目目录下的 logs/,或系统日志目录 /var/log/(如由 systemd 托管时位于 journald)。不清楚路径时,优先查阅项目配置或启动脚本。
- 实时查看与检索:
- 实时跟踪:tail -f /path/to/app.log
- 关键字筛选:grep -i “error|exception” /path/to/app.log
- 分页查看:less /path/to/app.log
- 若为服务进程,优先用 journalctl 查看:
- 查看全部:journalctl -u your-node-app.service -f
- 按时间:journalctl -u your-node-app.service --since “2026-01-06 00:00:00”
- 若日志分散(访问日志、错误日志、业务日志),分别定位后再聚合分析。
二 日志过大与轮转清理
- 推荐方案:使用 logrotate 做自动轮转、压缩与保留。示例(创建 /etc/logrotate.d/myapp):
/path/to/your/project/logs/*.log { daily rotate 7 compress delaycompress missingok notifempty create 640 node node copytruncate }- 关键参数:daily(按天轮转)、rotate 7(保留 7 份)、compress(压缩旧日志)、delaycompress(延迟压缩)、copytruncate(复制后截断,避免重启进程)、create(新文件权限与属主)。
- 手动立即压缩与清理:
- 压缩单个文件:gzip /path/to/app.log
- 清空文件内容(保留 inode):> /path/to/app.log
- 删除旧压缩包:rm /path/to/app.log.1.gz(谨慎操作)
- 定时清理(可选):在 crontab -e 中按需添加清理任务,例如每天清理一次:
- 0 1 * * * > /path/to/app.log
- 风险提示:删除或清空前先备份;生产环境优先用 logrotate 而非直接 rm。
三 日志级别与输出配置
- 运行时动态控制:通过环境变量设置日志级别,便于在不改代码的情况下调整输出量。
- 启动示例:LOG_LEVEL=debug node your-app.js
- 常用日志库配置要点:
- winston:可按级别输出到不同文件(如 error 单独落盘)。
const winston = require('winston'); const logger = winston.createLogger({ level: process.env.LOG_LEVEL || 'info', format: winston.format.json(), transports: [ new winston.transports.File({ filename: 'error.log', level: 'error' } ), new winston.transports.File({ filename: 'combined.log' } ) ] } ); - morgan(Express):HTTP 请求日志格式选择(如 combined、dev 等)。
const morgan = require('morgan'); app.use(morgan('combined'));
- winston:可按级别输出到不同文件(如 error 单独落盘)。
- 建议:生产默认 info,排障时临时切到 debug;按级别分流(error 单独文件、全量 combined)便于检索与告警。
四 常见报错与快速修复
- 依赖与语法:
- 检查运行时:node -v、npm list
- 安装依赖:npm install
- 语法/规范:使用 ESLint 或编辑器语法检查
- 资源与端口:
- 端口冲突:用 netstat -tulpen | grep :PORT 或 ss -ltnp | grep :PORT 查找占用并释放
- 路径与权限:
- 文件路径大小写、相对/绝对路径是否正确
- 日志目录权限是否允许 Node.js 进程写入(如属主 node:node、权限 640)
- 运行输出与调试:
- 应用内使用 console.error()/logger.error() 输出堆栈
- 结合 tail -f 实时观察,必要时用 Node.js 调试器或 Chrome DevTools 定位
五 分析与监控进阶
- 结构化与检索:
- 使用 winston/pino 输出 JSON,便于 grep/awk/sed 分析与后续接入 ELK(Elasticsearch, Logstash, Kibana)/Splunk
- 可视化与告警:
- 搭建 ELK 或 Grafana + Loki/Prometheus 做日志可视化与阈值告警
- 备份策略:
- 周期性打包归档:tar -czvf logs_$(date +%F).tar.gz /path/to/logs
- 增量同步到备份机:rsync -avz /path/to/logs backup:/backup/location
- 安全合规:
- 限制日志文件访问权限,避免泄露 token/密码;敏感字段脱敏后再写入
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos js日志常见问题
本文地址: https://pptw.com/jishu/787789.html
