code.gitea.io/gitea@v1.19.3/modules/log/logger.go (about)

     1  // Copyright 2019 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package log
     5  
     6  import "os"
     7  
     8  // Logger is the basic interface for logging
     9  type Logger interface {
    10  	LevelLogger
    11  	Trace(format string, v ...interface{})
    12  	IsTrace() bool
    13  	Debug(format string, v ...interface{})
    14  	IsDebug() bool
    15  	Info(format string, v ...interface{})
    16  	IsInfo() bool
    17  	Warn(format string, v ...interface{})
    18  	IsWarn() bool
    19  	Error(format string, v ...interface{})
    20  	ErrorWithSkip(skip int, format string, v ...interface{})
    21  	IsError() bool
    22  	Critical(format string, v ...interface{})
    23  	CriticalWithSkip(skip int, format string, v ...interface{})
    24  	IsCritical() bool
    25  	Fatal(format string, v ...interface{})
    26  	FatalWithSkip(skip int, format string, v ...interface{})
    27  	IsFatal() bool
    28  }
    29  
    30  // LevelLogger is the simplest logging interface
    31  type LevelLogger interface {
    32  	Flush()
    33  	Close()
    34  	GetLevel() Level
    35  	Log(skip int, level Level, format string, v ...interface{}) error
    36  }
    37  
    38  // SettableLogger is the interface of loggers which have subloggers
    39  type SettableLogger interface {
    40  	SetLogger(name, provider, config string) error
    41  	DelLogger(name string) (bool, error)
    42  }
    43  
    44  // StacktraceLogger is a logger that can log stacktraces
    45  type StacktraceLogger interface {
    46  	GetStacktraceLevel() Level
    47  }
    48  
    49  // LevelLoggerLogger wraps a LevelLogger as a Logger
    50  type LevelLoggerLogger struct {
    51  	LevelLogger
    52  }
    53  
    54  // Trace records trace log
    55  func (l *LevelLoggerLogger) Trace(format string, v ...interface{}) {
    56  	l.Log(1, TRACE, format, v...)
    57  }
    58  
    59  // IsTrace returns true if the logger is TRACE
    60  func (l *LevelLoggerLogger) IsTrace() bool {
    61  	return l.GetLevel() <= TRACE
    62  }
    63  
    64  // Debug records debug log
    65  func (l *LevelLoggerLogger) Debug(format string, v ...interface{}) {
    66  	l.Log(1, DEBUG, format, v...)
    67  }
    68  
    69  // IsDebug returns true if the logger is DEBUG
    70  func (l *LevelLoggerLogger) IsDebug() bool {
    71  	return l.GetLevel() <= DEBUG
    72  }
    73  
    74  // Info records information log
    75  func (l *LevelLoggerLogger) Info(format string, v ...interface{}) {
    76  	l.Log(1, INFO, format, v...)
    77  }
    78  
    79  // IsInfo returns true if the logger is INFO
    80  func (l *LevelLoggerLogger) IsInfo() bool {
    81  	return l.GetLevel() <= INFO
    82  }
    83  
    84  // Warn records warning log
    85  func (l *LevelLoggerLogger) Warn(format string, v ...interface{}) {
    86  	l.Log(1, WARN, format, v...)
    87  }
    88  
    89  // IsWarn returns true if the logger is WARN
    90  func (l *LevelLoggerLogger) IsWarn() bool {
    91  	return l.GetLevel() <= WARN
    92  }
    93  
    94  // Error records error log
    95  func (l *LevelLoggerLogger) Error(format string, v ...interface{}) {
    96  	l.Log(1, ERROR, format, v...)
    97  }
    98  
    99  // ErrorWithSkip records error log from "skip" calls back from this function
   100  func (l *LevelLoggerLogger) ErrorWithSkip(skip int, format string, v ...interface{}) {
   101  	l.Log(skip+1, ERROR, format, v...)
   102  }
   103  
   104  // IsError returns true if the logger is ERROR
   105  func (l *LevelLoggerLogger) IsError() bool {
   106  	return l.GetLevel() <= ERROR
   107  }
   108  
   109  // Critical records critical log
   110  func (l *LevelLoggerLogger) Critical(format string, v ...interface{}) {
   111  	l.Log(1, CRITICAL, format, v...)
   112  }
   113  
   114  // CriticalWithSkip records critical log from "skip" calls back from this function
   115  func (l *LevelLoggerLogger) CriticalWithSkip(skip int, format string, v ...interface{}) {
   116  	l.Log(skip+1, CRITICAL, format, v...)
   117  }
   118  
   119  // IsCritical returns true if the logger is CRITICAL
   120  func (l *LevelLoggerLogger) IsCritical() bool {
   121  	return l.GetLevel() <= CRITICAL
   122  }
   123  
   124  // Fatal records fatal log and exit the process
   125  func (l *LevelLoggerLogger) Fatal(format string, v ...interface{}) {
   126  	l.Log(1, FATAL, format, v...)
   127  	l.Close()
   128  	os.Exit(1)
   129  }
   130  
   131  // FatalWithSkip records fatal log from "skip" calls back from this function and exits the process
   132  func (l *LevelLoggerLogger) FatalWithSkip(skip int, format string, v ...interface{}) {
   133  	l.Log(skip+1, FATAL, format, v...)
   134  	l.Close()
   135  	os.Exit(1)
   136  }
   137  
   138  // IsFatal returns true if the logger is FATAL
   139  func (l *LevelLoggerLogger) IsFatal() bool {
   140  	return l.GetLevel() <= FATAL
   141  }