Golang日志在CentOS上如何查询
导读:在CentOS上查询Golang日志的常见方法 1. 根据日志输出目标选择查询方式 Golang应用的日志输出目标(控制台、文件、系统日志)决定了查询方法,需先确认应用的日志配置(如是否输出到文件、是否使用systemd服务)。 (1)直接...
在CentOS上查询Golang日志的常见方法
1. 根据日志输出目标选择查询方式
Golang应用的日志输出目标(控制台、文件、系统日志)决定了查询方法,需先确认应用的日志配置(如是否输出到文件、是否使用systemd服务)。
(1)直接查看终端输出(标准输出/标准错误)
若应用未配置日志文件,默认会将日志输出到终端(标准输出stdout或标准错误stderr)。若应用在前台运行(如通过./myapp启动),可直接看到日志;若应用在后台运行(如通过nohup ./myapp &
),可通过以下命令查看:
# 查看后台进程的日志(需替换为实际进程ID)
tail -f nohup.out
或通过ps命令找到进程ID,再用tail -f /proc/<
PID>
/fd/1查看标准输出。
(2)查看日志文件(自定义路径)
若应用配置了日志文件(如使用log.SetOutput或第三方库写入文件),可通过以下命令查看:
# 查看日志文件末尾(默认显示最后10行)
tail /path/to/your/app.log
# 实时跟踪日志更新(新增内容会动态显示)
tail -f /path/to/your/app.log
# 查看完整日志文件(适合小文件)
cat /path/to/your/app.log
# 分页查看日志(适合大文件,按空格翻页)
less /path/to/your/app.log
例如,若日志路径为/var/log/myapp.log,则使用tail -f /var/log/myapp.log实时查看。
(3)通过journalctl查看系统日志(systemd服务)
若应用以systemd服务运行(如服务名为myapp.service),日志会被systemd捕获,可通过journalctl命令查询:
# 查看特定服务的所有日志
journalctl -u myapp.service
# 实时跟踪服务日志更新
journalctl -u myapp.service -f
# 查看服务本次启动后的日志
journalctl -u myapp.service -b
# 查看特定时间范围的日志(如2025-06-01至2025-06-02)
journalctl -u myapp.service --since "2025-06-01" --until "2025-06-02"
# 搜索包含关键字的日志(如"error")
journalctl -u myapp.service | grep "error"
注:需替换myapp.service为实际服务名(可通过systemctl list-units --type=service查看)。
2. 使用命令过滤与分析日志
无论日志存储在文件还是journal中,均可通过以下命令筛选关键信息:
# 过滤包含"error"关键字的日志行
grep "error" /path/to/your/app.log
journalctl -u myapp.service | grep "error"
# 排除包含"debug"关键字的日志行(显示其他内容)
grep -v "debug" /path/to/your/app.log
# 查看最近100条日志
tail -n 100 /path/to/your/app.log
3. 日志轮转与长期管理
为避免日志文件过大,建议配置日志轮转(如使用lumberjack库或logrotate工具):
- 代码层轮转:使用
lumberjack库(第三方日志库如logrus、zap常用),示例代码:import "gopkg.in/natefinch/lumberjack.v2" func main() { logger := & lumberjack.Logger{ Filename: "/var/log/myapp.log", // 日志文件路径 MaxSize: 10, // 单个文件最大10MB MaxBackups: 3, // 保留3个备份 MaxAge: 28, // 保留28天 Compress: true, // 压缩旧日志 } log.SetOutput(logger) } - 系统层轮转:通过
logrotate工具配置(编辑/etc/logrotate.d/myapp文件),示例配置:执行/var/log/myapp.log { daily # 每天轮转 rotate 7 # 保留7个备份 compress # 压缩旧备份 missingok # 文件不存在时不报错 notifempty # 文件为空时不轮转 }logrotate -f /etc/logrotate.d/myapp可手动触发轮转。
注意事项
- 权限问题:若日志文件或journal无法访问,需使用
sudo提升权限(如sudo tail -f /var/log/myapp.log)。 - 日志级别:若应用使用第三方库(如
logrus、zap),可通过配置日志级别(如logger.SetLevel(logrus.InfoLevel))过滤无关日志,减少查询量。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Golang日志在CentOS上如何查询
本文地址: https://pptw.com/jishu/736973.html
