ntfy/log/log.go

125 lines
2.7 KiB
Go
Raw Normal View History

2022-05-30 04:14:14 +02:00
package log
import (
"log"
2022-06-01 22:57:35 +02:00
"sync"
2022-05-30 04:14:14 +02:00
)
2023-02-04 04:21:50 +01:00
var (
level = InfoLevel
format = TextFormat
overrides = make(map[string]*levelOverride)
mu = &sync.Mutex{}
2022-05-30 04:14:14 +02:00
)
2023-02-04 04:21:50 +01:00
// Fatal prints the given message, and exits the program
func Fatal(message string, v ...any) {
newEvent().Fatal(message, v...)
2022-05-30 04:14:14 +02:00
}
2023-02-04 04:21:50 +01:00
// Error prints the given message, if the current log level is ERROR or lower
func Error(message string, v ...any) {
newEvent().Error(message, v...)
}
2022-05-30 04:14:14 +02:00
2023-02-04 04:21:50 +01:00
// Warn prints the given message, if the current log level is WARN or lower
func Warn(message string, v ...any) {
newEvent().Warn(message, v...)
}
// Info prints the given message, if the current log level is INFO or lower
func Info(message string, v ...any) {
newEvent().Info(message, v...)
2022-06-02 05:24:44 +02:00
}
// Debug prints the given message, if the current log level is DEBUG or lower
2022-10-01 22:31:48 +02:00
func Debug(message string, v ...any) {
2023-02-04 04:21:50 +01:00
newEvent().Debug(message, v...)
2022-05-30 04:14:14 +02:00
}
2023-02-04 04:21:50 +01:00
// Trace prints the given message, if the current log level is TRACE
func Trace(message string, v ...any) {
newEvent().Trace(message, v...)
2022-05-30 04:14:14 +02:00
}
2023-02-04 04:21:50 +01:00
func Context(contexts ...Ctx) *Event {
return newEvent().Context(contexts...)
2022-05-30 04:14:14 +02:00
}
2023-02-04 04:21:50 +01:00
func Field(key string, value any) *Event {
return newEvent().Field(key, value)
2022-05-30 04:14:14 +02:00
}
2023-02-04 04:21:50 +01:00
func Fields(fields map[string]any) *Event {
return newEvent().Fields(fields)
}
func Tag(tag string) *Event {
return newEvent().Tag(tag)
2022-05-30 04:14:14 +02:00
}
2022-06-01 22:57:35 +02:00
// CurrentLevel returns the current log level
func CurrentLevel() Level {
mu.Lock()
defer mu.Unlock()
return level
}
// SetLevel sets a new log level
2022-05-30 04:14:14 +02:00
func SetLevel(newLevel Level) {
2022-06-01 22:57:35 +02:00
mu.Lock()
defer mu.Unlock()
2022-05-30 04:14:14 +02:00
level = newLevel
}
2023-02-04 04:21:50 +01:00
// SetLevelOverride adds a log override for the given field
func SetLevelOverride(field string, value any, level Level) {
mu.Lock()
defer mu.Unlock()
overrides[field] = &levelOverride{value: value, level: level}
}
2023-02-04 04:21:50 +01:00
// ResetLevelOverride removes all log level overrides
func ResetLevelOverride() {
mu.Lock()
defer mu.Unlock()
overrides = make(map[string]*levelOverride)
}
// CurrentFormat returns the current log formt
func CurrentFormat() Format {
mu.Lock()
defer mu.Unlock()
return format
}
// SetFormat sets a new log format
func SetFormat(newFormat Format) {
mu.Lock()
defer mu.Unlock()
format = newFormat
if newFormat == JSONFormat {
DisableDates()
2022-05-30 04:14:14 +02:00
}
}
2023-02-04 04:21:50 +01:00
// DisableDates disables the date/time prefix
func DisableDates() {
log.SetFlags(0)
}
2022-06-02 05:24:44 +02:00
// Loggable returns true if the given log level is lower or equal to the current log level
func Loggable(l Level) bool {
return CurrentLevel() <= l
}
// IsTrace returns true if the current log level is TraceLevel
func IsTrace() bool {
return Loggable(TraceLevel)
}
// IsDebug returns true if the current log level is DebugLevel or below
func IsDebug() bool {
return Loggable(DebugLevel)
}