mirror of
https://github.com/imgproxy/imgproxy.git
synced 2025-12-23 22:11:10 +02:00
71 lines
1.4 KiB
Go
71 lines
1.4 KiB
Go
package logger
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log/slog"
|
|
"os"
|
|
|
|
"github.com/imgproxy/imgproxy/v3/logger/gliblog"
|
|
"github.com/imgproxy/imgproxy/v3/logger/syslog"
|
|
)
|
|
|
|
// We store a [Handler] instance here so that we can restore it in [Unmute]
|
|
var handler *Handler
|
|
|
|
// init initializes the default logger
|
|
func init() {
|
|
cfg := NewDefaultConfig()
|
|
handler = NewHandler(os.Stdout, &cfg)
|
|
setDefaultHandler(handler)
|
|
}
|
|
|
|
// Init creates a logger and sets it as the default log/slog logger
|
|
func Init(config *Config) error {
|
|
if err := config.Validate(); err != nil {
|
|
return err
|
|
}
|
|
|
|
handler = NewHandler(os.Stdout, config)
|
|
setDefaultHandler(handler)
|
|
|
|
gliblog.Init()
|
|
|
|
if config.Syslog.Enabled {
|
|
slHook, err := syslog.NewHook(&config.Syslog)
|
|
if err != nil {
|
|
return fmt.Errorf("Unable to connect to syslog daemon: %s", err)
|
|
}
|
|
if slHook != nil {
|
|
AddHook(slHook)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func AddHook(hook Hook) {
|
|
if handler != nil {
|
|
handler.AddHook(hook)
|
|
}
|
|
}
|
|
|
|
func Fatal(msg string, args ...any) {
|
|
slog.Log(context.Background(), LevelCritical, msg, args...)
|
|
os.Exit(1)
|
|
}
|
|
|
|
// Mute sets the default logger to a discard logger muting all log output
|
|
func Mute() {
|
|
setDefaultHandler(slog.DiscardHandler)
|
|
}
|
|
|
|
// Unmute restores the default logger to the one created in [Init]
|
|
func Unmute() {
|
|
setDefaultHandler(handler)
|
|
}
|
|
|
|
func setDefaultHandler(h slog.Handler) {
|
|
slog.SetDefault(slog.New(h))
|
|
}
|