Alanxtl commented on code in PR #765:
URL: https://github.com/apache/dubbo-go-pixiu/pull/765#discussion_r2400733525


##########
pkg/logger/controller.go:
##########
@@ -104,26 +102,24 @@ func (c *logController) errorf(fmt string, args ...any) {
        c.logger.Errorf(fmt, args...)
 }
 
-// parseLevel is used to parse the level of the log.
-func (c *logController) parseLevel(level string) *zap.AtomicLevel {
-       var lvl zapcore.Level
+// parseLevel parses textual level to zapcore.Level.
+func (c *logController) parseLevel(level string) (zapcore.Level, bool) {
        switch strings.ToLower(level) {
        case "debug":
-               lvl = zapcore.DebugLevel
+               return zapcore.DebugLevel, true
        case "info":
-               lvl = zapcore.InfoLevel
-       case "warn":
-               lvl = zapcore.WarnLevel
+               return zapcore.InfoLevel, true
+       case "warn", "warning":
+               return zapcore.WarnLevel, true
        case "error":
-               lvl = zapcore.ErrorLevel
+               return zapcore.ErrorLevel, true
+       case "dpanic":
+               return zapcore.DPanicLevel, true
        case "panic":
-               lvl = zapcore.PanicLevel
+               return zapcore.PanicLevel, true
        case "fatal":
-               lvl = zapcore.FatalLevel
+               return zapcore.FatalLevel, true
        default:
-               return nil
+               return zapcore.InfoLevel, false

Review Comment:
   这个函数调用的时候是这样的:
   ```go
   // initLog initializes logger according to log config file and log level
   func initLog() error {
        err := logger.InitLog(logConfigPath)
        if err != nil {
                // cause `logger.InitLog` already handle init failed, so just 
use logger to log
                return err
        }
   
        var lvl zapcore.Level
        lvl, ok := logger.ParseLogLevel(logLevel)
        if !ok {
                err = fmt.Errorf("parse logLevel failed, unknown logLevel %s, 
fallback to default level INFO", logLevel)
        }
        if ok := logger.SetLoggerLevel(lvl); !ok {
                err = fmt.Errorf("set logLevel failed")
        }
        return err
   }
   ```
   需要通过bool来判断是否parse成功,如果不成功会返回defaultLevel和false,下游如果接收到false需要把错误返回



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to