github.com/GuanceCloud/cliutils@v1.1.21/logger/stdout.go (about)

     1  // Unless explicitly stated otherwise all files in this repository are licensed
     2  // under the MIT License.
     3  // This product includes software developed at Guance Cloud (https://www.guance.com/).
     4  // Copyright 2021-present Guance, Inc.
     5  
     6  package logger
     7  
     8  import (
     9  	"fmt"
    10  
    11  	"go.uber.org/zap"
    12  )
    13  
    14  var (
    15  	defaultStdoutRootLogger *zap.Logger // used for logging where root logger not setted
    16  	StdoutColor             bool
    17  	StdoutLevel             = DEBUG
    18  )
    19  
    20  func doInitStdoutLogger() error {
    21  	flags := OPT_DEFAULT
    22  	if StdoutColor {
    23  		flags |= OPT_COLOR
    24  	}
    25  
    26  	var err error
    27  	defaultStdoutRootLogger, err = stdoutLogger(StdoutLevel, flags)
    28  	if err != nil {
    29  		return err
    30  	}
    31  	return nil
    32  }
    33  
    34  func doSetStdoutLogger(opt *Option) error {
    35  	// reset default stdout logger
    36  	defaultStdoutRootLogger = nil
    37  	var err error
    38  	defaultStdoutRootLogger, err = stdoutLogger(opt.Level, opt.Flags)
    39  	if err != nil {
    40  		return fmt.Errorf("stdoutLogger: %w", err)
    41  	}
    42  	return nil
    43  }
    44  
    45  func stdoutLogger(level string, options int) (*zap.Logger, error) {
    46  	opt := options | OPT_STDOUT
    47  
    48  	if rootlogger, err := newRootLogger("", level, opt); err != nil {
    49  		return nil, err
    50  	} else {
    51  		return rootlogger, err
    52  	}
    53  }