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  }