在Debian系统下管理Golang编译后的日志,可通过以下方式实现:
logrotate
通过logrotate
工具实现日志轮转、压缩和删除,配置文件路径为/etc/logrotate.d/自定义名称
,示例配置:
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 root root
}
启用后系统会自动按配置管理日志。
systemd-journal
若通过systemd
管理服务,日志由journalctl
统一管理,可查看、清理或过滤日志,例如:
sudo journalctl -u myapp -f # 实时查看服务日志
sudo journalctl --vacuum-time=2weeks # 清理两周前日志
第三方日志库
import (
"github.com/sirupsen/logrus"
"gopkg.in/natefinch/lumberjack.v2"
)
func main() {
logger := logrus.New()
logger.SetOutput(&lumberjack.Logger{
Filename: "/var/log/myapp.log",
MaxSize: 100, // MB
MaxBackups: 7,
Compress: true,
})
logger.Info("This is a log message")
}
lumberjack
实现轮转。标准库log
使用log
包时,可通过SetOutput
将日志输出到文件,但需手动实现轮转逻辑或结合lumberjack
。
tail -f
结合grep
过滤关键日志,或通过Fluentd
/Logstash
收集并转发至ELK等分析平台。Grafana
+Prometheus
展示日志指标,或使用GoAccess
生成Web访问日志统计。0640
),避免敏感信息泄露。rsync
或scp
传输至远程存储。根据实际需求选择合适方案,小型项目可优先使用logrus
+lumberjack
,大型分布式系统建议结合systemd
和日志收集工具实现集中管理。