package mongoLogger import ( "log" "os" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) func Init() { // Replace localhost if inside Docker mongoCore, err := NewMongoCore("mongodb://root:secret@mongo:27017/?authSource=admin", "logdb", "applogs", zapcore.InfoLevel) if err != nil { log.Fatalf("failed to create MongoDB core: %v", err) } consoleEncoder := zapcore.NewConsoleEncoder(zap.NewDevelopmentEncoderConfig()) consoleCore := zapcore.NewCore(consoleEncoder, zapcore.Lock(os.Stdout), zapcore.DebugLevel) combinedCore := zapcore.NewTee(mongoCore, consoleCore) logger := zap.New(combinedCore, zap.AddCaller(), zap.AddStacktrace(zapcore.ErrorLevel)) zap.ReplaceGlobals(logger) // Optional but useful if you use zap.L() defer logger.Sync() logger.Info("Application started", zap.String("module", "main")) logger.Error("Something went wrong", zap.String("error_code", "E123")) }