1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package simple_zap
- import (
- "context"
- "go.uber.org/zap"
- "go.uber.org/zap/zapcore"
- "gopkg.in/natefinch/lumberjack.v2"
- )
- const loggerCtxKey = "baozhida"
- var Logger *zap.Logger
- func init() {
- hook := lumberjack.Logger{
- Filename: "./log/app.log",
- MaxSize: 1,
- Compress: true,
- MaxAge: 30,
- MaxBackups: 7,
- LocalTime: true,
- }
- encoder_config := zapcore.EncoderConfig{
- MessageKey: "message",
- LevelKey: "level",
- TimeKey: "time",
- CallerKey: "lineNum",
- FunctionKey: "func",
- LineEnding: zapcore.DefaultLineEnding,
- EncodeLevel: zapcore.LowercaseLevelEncoder,
- EncodeTime: zapcore.ISO8601TimeEncoder,
- EncodeDuration: zapcore.SecondsDurationEncoder,
- EncodeCaller: zapcore.ShortCallerEncoder,
- }
- caller := zap.AddCaller()
- development := zap.Development()
- field := zap.Fields()
- var syncers []zapcore.WriteSyncer
- syncers = append(syncers, zapcore.AddSync(&hook))
- atomic_level := zap.NewAtomicLevel()
- atomic_level.SetLevel(zap.DebugLevel)
- core := zapcore.NewCore(zapcore.NewJSONEncoder(encoder_config), zapcore.NewMultiWriteSyncer(syncers...), atomic_level)
- Logger = zap.New(core, caller, development, field)
- }
- func NewCtx(ctx context.Context, fields ...zapcore.Field) context.Context {
- return context.WithValue(ctx, loggerCtxKey, WithCtx(ctx).With(fields...))
- }
- func WithCtx(ctx context.Context) *zap.Logger {
- if ctx == nil {
- return Logger
- }
- ctx_logger, ok := ctx.Value(loggerCtxKey).(*zap.Logger)
- if ok {
- return ctx_logger
- }
- return Logger
- }
|