| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package logger
- import (
- "log"
- "go.uber.org/zap"
- )
- var Log *zap.Logger
- var Sugar *zap.SugaredLogger
- var Std *log.Logger
- func Init(env string) error {
- opt := zap.AddStacktrace(zap.ErrorLevel) // error 日志打印堆栈信息
- var err error
- if env == "pro" {
- // Log, err = zap.NewProduction(opt)
- Log, err = newProduction(opt)
- log.Println("zap init newProduction")
- } else {
- // Log, err = zap.NewDevelopment(opt)
- Log, err = newDevelopment(opt)
- log.Println("zap init newDevelopment")
- }
- if err == nil {
- Sugar = Log.Sugar()
- }
- zap.ReplaceGlobals(Log) // 全局logger,zap.L() 和 zap.S() 需要调用 ReplaceGlobals 函数才会记录日志信息
- // 之后可以使用zap.L()代替Log,zap.S()代替Sugar
- Std = zap.NewStdLog(Log) // 标准输入自动转换为 zap.logger日志
- return err
- }
- func newProduction(options ...zap.Option) (*zap.Logger, error) {
- config := zap.Config{
- Level: zap.NewAtomicLevelAt(zap.WarnLevel),
- Development: false,
- Sampling: &zap.SamplingConfig{
- Initial: 100,
- Thereafter: 100,
- },
- Encoding: "json",
- EncoderConfig: zap.NewProductionEncoderConfig(),
- OutputPaths: []string{"stderr"},
- ErrorOutputPaths: []string{"stderr"},
- }
- return config.Build(options...)
- }
- func newDevelopment(options ...zap.Option) (*zap.Logger, error) {
- config := zap.Config{
- Level: zap.NewAtomicLevelAt(zap.DebugLevel),
- Development: true,
- Encoding: "console",
- EncoderConfig: zap.NewDevelopmentEncoderConfig(),
- OutputPaths: []string{"stderr"},
- ErrorOutputPaths: []string{"stderr"},
- }
- return config.Build(options...)
- }
|