Skip to content

Instantly share code, notes, and snippets.

@winston-wen
Last active August 22, 2023 08:19
Show Gist options
  • Save winston-wen/66718f95ef3c82313f5bbf797f286edc to your computer and use it in GitHub Desktop.
Save winston-wen/66718f95ef3c82313f5bbf797f286edc to your computer and use it in GitHub Desktop.
Typical logging in Golang.
package main
import (
"os"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
lbj "gopkg.in/natefinch/lumberjack.v2"
)
var log_level zap.AtomicLevel = zap.NewAtomicLevelAt(zap.InfoLevel)
func InitLogger() {
w := zapcore.AddSync(&lbj.Logger{
Filename: "logs/app_name.log",
MaxSize: 4, // MB per file
// 15 old files and 1 new file. The new file has no suffix.
MaxBackups: 15,
})
w2 := zapcore.NewMultiWriteSyncer(w, zapcore.AddSync(os.Stdout))
conf_enc := zap.NewProductionEncoderConfig()
conf_enc.LevelKey = "lv"
conf_enc.CallerKey = "pos"
conf_enc.EncodeTime = zapcore.ISO8601TimeEncoder
core := zapcore.NewCore(
zapcore.NewJSONEncoder(conf_enc),
w2,
log_level,
)
log := zap.New(core)
zap.ReplaceGlobals(log)
}
func main() {
InitLogger()
defer zap.S().Sync()
log_level.SetLevel(zap.DebugLevel)
for i := 0; i < 114514; i++ {
for j := 0; j < 1919; j++ {
zap.S().Debugw("test", "i", i, "j", j)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment