在 Debian 上“过滤 Golang 日志”通常分几种场景:
下面按常见场景给你实用做法。
如果你的 Golang 程序是通过 systemd 启动的:
journalctl -u your-service-name
journalctl -u your-service-name | grep ERROR
journalctl -u your-service-name --since "2024-01-01" --until "2024-01-02"
journalctl -u your-service-name -f | grep -v DEBUG
grep "ERROR" /var/log/app.log
grep -v "DEBUG" /var/log/app.log
grep -E "ERROR|WARN" /var/log/app.log
tail -f /var/log/app.log | grep ERROR
log.SetOutput(os.Stdout)
if level == "ERROR" {
log.Println("error message")
}
import "github.com/sirupsen/logrus"
log := logrus.New()
log.SetLevel(logrus.WarnLevel) // 只输出 Warn 及以上
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("info log") // 可被级别控制
logger.Error("error log")
如果 Golang 程序使用 log/syslog 或 systemd 日志:
journalctl -p err -u your-service
级别:
errwarninginfodebugdocker logs your-container | grep ERROR
实时:
docker logs -f your-container | grep -v DEBUG
只看错误,实时:
journalctl -u mygoapp -f | grep ERROR
排除健康检查和心跳:
tail -f app.log | grep -v "healthcheck"
如果你能告诉我:
我可以给你更精确的命令或代码配置。