Golang应用程序的日志位置通常由代码配置决定,常见路径包括应用程序工作目录(如./app.log)或系统日志目录(如/var/log/yourapp.log)。若使用第三方日志库(如logrus、zap),可能默认输出到stdout或指定文件;若使用标准库log包,需检查代码中log.SetOutput()的配置(如是否指向文件)。日志格式多为文本(包含时间、日志级别、文件名及行号)或JSON(结构化数据,便于后续分析)。
CentOS提供的命令行工具可快速查看和分析日志:
tail命令:实时查看日志最新内容,适用于监控实时错误。例如:tail -f /path/to/your/app.log # 实时跟踪日志文件末尾
grep命令:过滤特定关键字(如“ERROR”),快速定位错误条目。例如:grep "ERROR" /path/to/your/app.log # 筛选包含ERROR的日志行
grep -i "error" /path/to/your/app.log # 忽略大小写筛选
less/more命令:分页查看日志文件,适合查看历史日志。例如:less /path/to/your/app.log # 分页查看,按q退出
awk/sed命令:进行复杂文本处理,如统计错误数量、提取特定字段。例如:awk '/ERROR/ {count++} END {print "Error count:", count}' /path/to/your/app.log # 统计ERROR数量
sed -n '/ERROR/{s/.*\[(.*?)\].*/\1/p}' /path/to/your/app.log # 提取ERROR行中的时间戳(假设格式为[时间])
当日志文件过大时,需使用logrotate工具自动切割、压缩和删除旧日志,防止占用过多磁盘空间。操作步骤如下:
logrotate配置文件:在/etc/logrotate.d/目录下新建文件(如yourapp),内容如下:/path/to/your/logs/*.log {
daily # 每天切割一次
missingok # 若日志文件不存在也不报错
rotate 7 # 保留最近7个日志文件
compress # 压缩旧日志(如.gz格式)
notifempty # 若日志为空则不切割
create 0640 root root # 新日志文件的权限和所有者
}
logrotate验证配置是否正确:logrotate -vf /etc/logrotate.d/yourapp
对于生产环境或复杂日志场景,可使用专业工具提升分析效率:
若Golang应用程序未正确记录日志或需查看系统级错误(如进程崩溃、资源不足),可使用journalctl命令查看系统日志:
journalctl -u yourapp.service # 查看指定服务的系统日志(需提前配置systemd服务)
journalctl -xe # 查看最近的系统日志(包含错误详情)
通过编写脚本或使用监控工具实现自动化日志分析和错误告警:
grep命令统计错误数量,若超过阈值则发送邮件或短信告警。例如:#!/bin/bash
ERROR_COUNT=$(grep -c "ERROR" /path/to/your/app.log)
if [ $ERROR_COUNT -gt 10 ]; then
echo "Error count exceeds threshold: $ERROR_COUNT" | mail -s "Golang App Error Alert" admin@example.com
fi
通过以上步骤,可在CentOS系统中高效分析Golang错误日志,快速定位和解决问题。