Node.js应用程序的日志文件位置取决于配置,常见路径包括:
/path/to/your/nodejs-app/logs/app.log);/var/log/nodejs/或/var/log/myapp/);systemd管理,日志可能通过journalctl查看。ls命令或查看应用程序配置文件(如config.js)确认路径。Debian系统自带的命令行工具可快速处理日志,适合简单分析场景:
cat /path/to/app.log:输出日志全部内容;tail -f /path/to/app.log:实时查看日志更新(常用于监控实时错误)。grep "ERROR" /path/to/app.log:筛选包含“ERROR”的行(区分大小写,可用-i忽略大小写);grep "2025-10-24" /path/to/app.log:筛选特定日期的日志。awk '{print $1, $2}' /path/to/app.log:提取每行前两个字段(如时间戳和日志级别);sort | uniq -c | sort -rnk1:统计重复日志条目(按频率降序排列,找出高频错误)。sed '/Deprecated/d' /path/to/app.log:删除包含“Deprecated”的行(清理过时日志)。结构化日志(如JSON格式)更易被工具解析,推荐以下Node.js日志库:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(), // 输出JSON格式
transports: [new winston.transports.File({ filename: '/path/to/app.log' })],
});
logger.error('This is an error message'); // 记录错误日志
pino-cli工具查看和过滤日志(如pino -f /path/to/app.log | grep "error")。bunyan CLI工具(如bunyan -o short /path/to/app.log格式化输出)。jq工具进一步处理(如cat app.log | jq '.level'提取日志级别)。对于分布式系统或多节点应用,集中式日志管理工具能统一收集、存储和分析日志:
grok过滤器解析Node.js日志(如%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:message});error记录严重问题、warn记录潜在问题、info记录常规流程),避免日志冗余。winston-daily-rotate-file插件自动分割日志文件(如按天生成app-2025-10-24.log),防止日志文件过大占用磁盘空间。transports.File默认异步),避免阻塞主线程影响应用性能。censor中间件或自定义过滤器屏蔽日志中的敏感信息(如密码、信用卡号),防止信息泄露。通过上述方法,可在Debian环境下高效分析Node.js日志,快速定位问题并优化应用性能。