debian

Golang日志在Debian如何审计

小樊
36
2025-11-24 16:06:36
栏目: 编程语言

在 Debian 上对 Golang 日志进行审计的落地方案


一 审计目标与总体架构


二 应用侧日志规范与示例

package main

import (
    "go.uber.org/zap"
    "go.uber.org/zap/zapcore"
    "os"
)

func main() {
    cfg := zap.Config{
        Level:       zap.NewAtomicLevelAt(zap.InfoLevel),
        Encoding:    "json",
        EncoderConfig: zapcore.EncoderConfig{
            TimeKey:      "ts",
            LevelKey:     "level",
            MessageKey:   "msg",
            StacktraceKey: "stacktrace",
            LineEnding:   zapcore.DefaultLineEnding,
            EncodeLevel:  zapcore.LowercaseLevelEncoder,
            EncodeTime:   zapcore.ISO8601TimeEncoder,
        },
        OutputPaths:      []string{"/var/log/myapp/audit.log"},
        ErrorOutputPaths: []string{"/var/log/myapp/audit_error.log"},
    }
    logger, err := cfg.Build()
    if err != nil { panic(err) }
    defer logger.Sync()

    // 审计事件示例
    logger.Info("user login",
        zap.String("user_id", "u1001"),
        zap.String("ip", "192.0.2.10"),
        zap.String("action", "login"),
        zap.String("status", "success"),
        zap.String("trace_id", "abc-123-def"),
    )
}

三 系统侧日志采集与轮转

/var/log/myapp/audit.log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    notifempty
    create 640 myapp adm
    postrotate
        systemctl reload myapp.service >/dev/null 2>&1 || true
    endscript
}

四 查询分析与监控告警


五 安全加固与合规要点

0
看了该问题的人还看了