gitee.com/woood2/luca@v1.0.4/internal/log/zap.go (about)

     1  package log
     2  
     3  import (
     4  	"gitee.com/woood2/luca/internal/conf"
     5  	"go.uber.org/zap"
     6  	"log"
     7  )
     8  
     9  func Build(env, project, entrance, instance string, consoleMode bool, options ...zap.Option) *zap.Logger {
    10  	var config zap.Config
    11  	if conf.IsPro(env) {
    12  		config = zap.Config{
    13  			Level:       zap.NewAtomicLevelAt(zap.InfoLevel),
    14  			Development: false,
    15  			Sampling: &zap.SamplingConfig{
    16  				Initial:    100,
    17  				Thereafter: 100,
    18  			},
    19  		}
    20  	} else {
    21  		config = zap.Config{
    22  			Level:       zap.NewAtomicLevelAt(zap.DebugLevel),
    23  			Development: true,
    24  		}
    25  	}
    26  	config.InitialFields = make(map[string]interface{})
    27  	config.InitialFields["project"] = project
    28  	config.InitialFields["entrance"] = entrance
    29  	config.InitialFields["instance"] = instance
    30  	if consoleMode {
    31  		config.Encoding = "console"
    32  		config.EncoderConfig = zap.NewDevelopmentEncoderConfig()
    33  		config.OutputPaths = []string{"stderr"}
    34  		config.ErrorOutputPaths = []string{"stderr"}
    35  	} else {
    36  		config.Encoding = "json"
    37  		config.EncoderConfig = zap.NewProductionEncoderConfig()
    38  		config.OutputPaths = []string{"./zap.log"}
    39  		config.ErrorOutputPaths = []string{"./error.log"}
    40  	}
    41  
    42  	if logger, err := config.Build(options...); err != nil {
    43  		log.Panicln(err)
    44  		return nil
    45  	} else {
    46  		return logger
    47  	}
    48  }