code.gitea.io/gitea@v1.22.3/modules/log/misc.go (about)

     1  // Copyright 2023 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package log
     5  
     6  import (
     7  	"io"
     8  )
     9  
    10  type baseToLogger struct {
    11  	base BaseLogger
    12  }
    13  
    14  // BaseLoggerToGeneralLogger wraps a BaseLogger (which only has Log() function) to a Logger (which has Info() function)
    15  func BaseLoggerToGeneralLogger(b BaseLogger) Logger {
    16  	l := &baseToLogger{base: b}
    17  	return l
    18  }
    19  
    20  var _ Logger = (*baseToLogger)(nil)
    21  
    22  func (s *baseToLogger) Log(skip int, level Level, format string, v ...any) {
    23  	s.base.Log(skip+1, level, format, v...)
    24  }
    25  
    26  func (s *baseToLogger) GetLevel() Level {
    27  	return s.base.GetLevel()
    28  }
    29  
    30  func (s *baseToLogger) LevelEnabled(level Level) bool {
    31  	return s.base.GetLevel() <= level
    32  }
    33  
    34  func (s *baseToLogger) Trace(format string, v ...any) {
    35  	s.base.Log(1, TRACE, format, v...)
    36  }
    37  
    38  func (s *baseToLogger) Debug(format string, v ...any) {
    39  	s.base.Log(1, DEBUG, format, v...)
    40  }
    41  
    42  func (s *baseToLogger) Info(format string, v ...any) {
    43  	s.base.Log(1, INFO, format, v...)
    44  }
    45  
    46  func (s *baseToLogger) Warn(format string, v ...any) {
    47  	s.base.Log(1, WARN, format, v...)
    48  }
    49  
    50  func (s *baseToLogger) Error(format string, v ...any) {
    51  	s.base.Log(1, ERROR, format, v...)
    52  }
    53  
    54  func (s *baseToLogger) Critical(format string, v ...any) {
    55  	s.base.Log(1, CRITICAL, format, v...)
    56  }
    57  
    58  type PrintfLogger struct {
    59  	Logf func(format string, args ...any)
    60  }
    61  
    62  func (p *PrintfLogger) Printf(format string, args ...any) {
    63  	p.Logf(format, args...)
    64  }
    65  
    66  type loggerToWriter struct {
    67  	logf func(format string, args ...any)
    68  }
    69  
    70  func (p *loggerToWriter) Write(bs []byte) (int, error) {
    71  	p.logf("%s", string(bs))
    72  	return len(bs), nil
    73  }
    74  
    75  // LoggerToWriter wraps a log function to an io.Writer
    76  func LoggerToWriter(logf func(format string, args ...any)) io.Writer {
    77  	return &loggerToWriter{logf: logf}
    78  }