Node.js应用的日志路径通常由配置决定,常见位置包括:
/var/log/nodejs/(部分系统默认存放路径);logs/文件夹(如./logs/app.log);LOG_PATH等环境变量自定义路径(如LOG_PATH=/var/log/myapp.log)。config.js)或启动命令确认。Debian系统自带的命令行工具可快速查看和处理日志:
cat:查看完整日志文件(如cat /path/to/app.log);tail:实时监控日志更新(如tail -f /path/to/app.log,常用于跟踪实时错误);grep:搜索特定关键词(如grep "ERROR" /path/to/app.log提取所有错误日志);awk/sed:提取字段或处理文本(如awk -F',' '{print $2, $5}' access.log按逗号分隔并打印第2、5列);sort/uniq:统计日志频率(如sort -k3,3n access.log | uniq -c | sort -nr按第三列排序并统计唯一出现次数)。对于复杂场景(如大规模日志、长期存储、可视化),推荐专用工具:
日志文件过大会占用磁盘空间,需通过logrotate工具定期轮转(压缩、删除旧日志):
/etc/logrotate.d/nodejs):/path/to/your/logfile.log { daily # 每天轮转 missingok # 文件不存在时不报错 rotate 7 # 保留7份旧日志 compress # 压缩旧日志(如.gz格式) notifempty # 日志为空时不轮转 create 0640 root adm # 创建新日志文件的权限和所有者 } 执行logrotate -f /etc/logrotate.d/nodejs可手动触发轮转。采用结构化日志格式(如JSON)可提升日志可解析性,便于后续分析:
const winston = require('winston'); const logger = winston.createLogger({ level: 'info', format: winston.format.json(), // JSON格式输出 transports: [ new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'combined.log' }), new winston.transports.Console() // 控制台输出 ] }); bunyan -o short app.log)格式化日志,便于阅读。设置实时监控和警报规则,及时响应关键问题:
以上方法覆盖了从基础到高级的日志分析需求,可根据应用规模(如小型应用用命令行+PM2,大型应用用ELK+Graylog)、团队技术栈选择合适的方案。