github.com/verrazzano/verrazzano-monitoring-operator@v0.0.30/verrazzano-backup-hook/log/log.go (about) 1 // Copyright (c) 2022, Oracle and/or its affiliates. 2 // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. 3 4 package log 5 6 import ( 7 "go.uber.org/zap" 8 "go.uber.org/zap/zapcore" 9 "log" 10 ) 11 12 // Logger constructs a logger that prints out messages in json and also logs to a file 13 func Logger(filePath string) (*zap.SugaredLogger, error) { 14 logger, err := zap.NewProduction() 15 if err != nil { 16 log.Println("Unable to initialize klog") 17 } 18 defer logger.Sync() 19 20 cfg := zap.Config{ 21 Encoding: "json", 22 Level: zap.NewAtomicLevelAt(zapcore.InfoLevel), 23 OutputPaths: []string{filePath, "stderr"}, 24 ErrorOutputPaths: []string{"stderr"}, 25 EncoderConfig: zapcore.EncoderConfig{ 26 MessageKey: "message", 27 LevelKey: "level", 28 EncodeLevel: zapcore.CapitalLevelEncoder, 29 30 TimeKey: "@timestamp", 31 EncodeTime: zapcore.ISO8601TimeEncoder, 32 33 CallerKey: "caller", 34 EncodeCaller: zapcore.ShortCallerEncoder, 35 }, 36 } 37 logger, err = cfg.Build() 38 if err != nil { 39 logger.Sugar().Errorf("Unable to build logger due to %v", err) 40 return nil, err 41 } 42 return logger.Sugar(), nil 43 }