2019-04-02 10:48:31 +03:00
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package log
2020-10-31 08:36:46 +03:00
import "os"
// Logger is the basic interface for logging
type Logger interface {
LevelLogger
Trace ( format string , v ... interface { } )
IsTrace ( ) bool
Debug ( format string , v ... interface { } )
IsDebug ( ) bool
Info ( format string , v ... interface { } )
IsInfo ( ) bool
Warn ( format string , v ... interface { } )
IsWarn ( ) bool
Error ( format string , v ... interface { } )
ErrorWithSkip ( skip int , format string , v ... interface { } )
IsError ( ) bool
Critical ( format string , v ... interface { } )
CriticalWithSkip ( skip int , format string , v ... interface { } )
IsCritical ( ) bool
Fatal ( format string , v ... interface { } )
FatalWithSkip ( skip int , format string , v ... interface { } )
IsFatal ( ) bool
}
// LevelLogger is the simplest logging interface
type LevelLogger interface {
Flush ( )
Close ( )
GetLevel ( ) Level
Log ( skip int , level Level , format string , v ... interface { } ) error
}
// SettableLogger is the interface of loggers which have subloggers
type SettableLogger interface {
SetLogger ( name , provider , config string ) error
DelLogger ( name string ) ( bool , error )
}
// StacktraceLogger is a logger that can log stacktraces
type StacktraceLogger interface {
GetStacktraceLevel ( ) Level
}
// LevelLoggerLogger wraps a LevelLogger as a Logger
type LevelLoggerLogger struct {
LevelLogger
2019-04-02 10:48:31 +03:00
}
// Trace records trace log
2020-10-31 08:36:46 +03:00
func ( l * LevelLoggerLogger ) Trace ( format string , v ... interface { } ) {
2019-04-02 10:48:31 +03:00
l . Log ( 1 , TRACE , format , v ... )
}
2020-10-31 08:36:46 +03:00
// IsTrace returns true if the logger is TRACE
func ( l * LevelLoggerLogger ) IsTrace ( ) bool {
return l . GetLevel ( ) <= TRACE
}
2019-04-02 10:48:31 +03:00
// Debug records debug log
2020-10-31 08:36:46 +03:00
func ( l * LevelLoggerLogger ) Debug ( format string , v ... interface { } ) {
2019-04-02 10:48:31 +03:00
l . Log ( 1 , DEBUG , format , v ... )
}
2020-10-31 08:36:46 +03:00
// IsDebug returns true if the logger is DEBUG
func ( l * LevelLoggerLogger ) IsDebug ( ) bool {
return l . GetLevel ( ) <= DEBUG
}
2019-04-02 10:48:31 +03:00
// Info records information log
2020-10-31 08:36:46 +03:00
func ( l * LevelLoggerLogger ) Info ( format string , v ... interface { } ) {
2019-04-02 10:48:31 +03:00
l . Log ( 1 , INFO , format , v ... )
}
2020-10-31 08:36:46 +03:00
// IsInfo returns true if the logger is INFO
func ( l * LevelLoggerLogger ) IsInfo ( ) bool {
return l . GetLevel ( ) <= INFO
}
2019-04-02 10:48:31 +03:00
// Warn records warning log
2020-10-31 08:36:46 +03:00
func ( l * LevelLoggerLogger ) Warn ( format string , v ... interface { } ) {
2019-04-02 10:48:31 +03:00
l . Log ( 1 , WARN , format , v ... )
}
2020-10-31 08:36:46 +03:00
// IsWarn returns true if the logger is WARN
func ( l * LevelLoggerLogger ) IsWarn ( ) bool {
return l . GetLevel ( ) <= WARN
}
2019-04-02 10:48:31 +03:00
// Error records error log
2020-10-31 08:36:46 +03:00
func ( l * LevelLoggerLogger ) Error ( format string , v ... interface { } ) {
2019-04-02 10:48:31 +03:00
l . Log ( 1 , ERROR , format , v ... )
}
// ErrorWithSkip records error log from "skip" calls back from this function
2020-10-31 08:36:46 +03:00
func ( l * LevelLoggerLogger ) ErrorWithSkip ( skip int , format string , v ... interface { } ) {
2019-04-02 10:48:31 +03:00
l . Log ( skip + 1 , ERROR , format , v ... )
}
2020-10-31 08:36:46 +03:00
// IsError returns true if the logger is ERROR
func ( l * LevelLoggerLogger ) IsError ( ) bool {
return l . GetLevel ( ) <= ERROR
}
2019-04-02 10:48:31 +03:00
// Critical records critical log
2020-10-31 08:36:46 +03:00
func ( l * LevelLoggerLogger ) Critical ( format string , v ... interface { } ) {
2019-04-02 10:48:31 +03:00
l . Log ( 1 , CRITICAL , format , v ... )
}
// CriticalWithSkip records critical log from "skip" calls back from this function
2020-10-31 08:36:46 +03:00
func ( l * LevelLoggerLogger ) CriticalWithSkip ( skip int , format string , v ... interface { } ) {
2019-04-02 10:48:31 +03:00
l . Log ( skip + 1 , CRITICAL , format , v ... )
}
2020-10-31 08:36:46 +03:00
// IsCritical returns true if the logger is CRITICAL
func ( l * LevelLoggerLogger ) IsCritical ( ) bool {
return l . GetLevel ( ) <= CRITICAL
}
2019-04-02 10:48:31 +03:00
// Fatal records fatal log and exit the process
2020-10-31 08:36:46 +03:00
func ( l * LevelLoggerLogger ) Fatal ( format string , v ... interface { } ) {
2019-04-02 10:48:31 +03:00
l . Log ( 1 , FATAL , format , v ... )
l . Close ( )
os . Exit ( 1 )
}
// FatalWithSkip records fatal log from "skip" calls back from this function and exits the process
2020-10-31 08:36:46 +03:00
func ( l * LevelLoggerLogger ) FatalWithSkip ( skip int , format string , v ... interface { } ) {
2019-04-02 10:48:31 +03:00
l . Log ( skip + 1 , FATAL , format , v ... )
l . Close ( )
os . Exit ( 1 )
}
2020-10-31 08:36:46 +03:00
// IsFatal returns true if the logger is FATAL
func ( l * LevelLoggerLogger ) IsFatal ( ) bool {
return l . GetLevel ( ) <= FATAL
}