log.SetOutput()(标准库)或第三方库(如logrus、zap)的配置项指定。需确认路径是否存在(如/var/log/myapp.log),避免因路径错误导致日志无法写入。chmod 755 /var/log,chown appuser:appgroup /var/log/myapp.log)。权限不足会导致日志写入失败,常见错误为open /var/log/app.log: permission denied。tail命令:通过tail -f /path/to/logfile.log实时监控日志文件的最新内容,快速捕捉错误信息的出现时间(如tail -f /var/log/myapp.log)。grep命令过滤特定错误关键词(如grep "ERROR" /var/log/myapp.log),缩小问题范围。例如,查找所有包含“connection refused”的错误日志:grep "connection refused" /var/log/myapp.log。INFO调整为DEBUG)。例如,使用logrus时:logrus.SetLevel(logrus.DebugLevel);使用zap时:zap.NewDevelopment()(开发环境,输出更详细的调试信息)。log.SetFlags(log.LstdFlags | log.Lshortfile)输出文件名和行号;logrus可通过logrus.WithFields(logrus.Fields{"key": "value"})附加上下文。systemd运行(如my-golang-app.service),使用journalctl命令查看服务日志:journalctl -u my-golang-app -f(实时)或journalctl -u my-golang-app --since "2025-10-13 10:00:00"(指定时间范围)。dmesg命令查看内核日志:dmesg | grep my-golang-app,排查系统级错误(如内存溢出、磁盘满)。dlv debug /path/to/application启动调试会话,设置断点(break main.main)、单步执行(next)、查看变量值(print variableName),观察日志生成前的程序状态(如变量是否为空、条件是否满足)。pprof分析性能瓶颈。导入net/http/pprof并启动HTTP服务器(go tool pprof http://localhost:6060/debug/pprof/profile),生成性能报告,查看日志写入操作的耗时。logrotate(sudo yum install logrotate),创建配置文件(如/etc/logrotate.d/myapp),设置日志轮转规则:/path/to/myapp.log {
daily
rotate 7
compress
missingok
notifempty
create 640 appuser appgroup
}
该配置表示每天轮转一次日志,保留最近7天的压缩日志(.gz),避免单个日志文件过大导致磁盘空间耗尽。logrus-elasticsearch钩子或zap的elasticsearch输出插件,将日志实时同步到ELK,实现快速搜索、过滤和统计(如按错误类型统计、按时间趋势分析)。通过以上步骤,可快速定位CentOS环境下Golang日志问题的根源(如日志路径错误、权限不足、错误信息缺失、性能瓶颈等),并结合工具提升排查效率。