// Winston示例:记录JSON格式日志到文件
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'app.log' })
]
});
logger.info('请求处理完成', { method: 'GET', path: '/api' });
logrotate工具避免日志文件过大,设置按天归档、压缩等策略。# /etc/logrotate.d/nodejs配置示例
/var/log/nodejs/*.log {
daily
rotate 7
compress
missingok
}
tail -f app.log:实时查看最新日志。grep 'error' app.log:搜索错误关键字。awk '{print $1}' app.log | sort | uniq -c:统计日志级别分布。sudo apt-get install elasticsearch logstash kibana。# /etc/logstash/conf.d/nodejs.conf
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" }
}
}
output { elasticsearch { hosts => ["localhost:9200"] } }
stack trace(堆栈跟踪)快速找到代码异常位置。timestamp、level、message、metadata(如请求ID)。工具推荐总结:
console.log+tail -f快速定位问题。