1
0
mirror of https://github.com/imgproxy/imgproxy.git synced 2025-02-17 11:55:32 +02:00
imgproxy/logger/log.go

62 lines
1.2 KiB
Go

package logger
import (
"fmt"
"os"
logrus "github.com/sirupsen/logrus"
"github.com/imgproxy/imgproxy/v3/config/configurators"
)
func init() {
// Configure logrus so it can be used before Init().
// Structured formatter is a compromise between JSON and pretty formatters.
logrus.SetOutput(os.Stdout)
logrus.SetFormatter(&structuredFormatter{})
}
func Init() error {
logrus.SetOutput(os.Stdout)
logFormat := "pretty"
logLevel := "info"
configurators.String(&logFormat, "IMGPROXY_LOG_FORMAT")
configurators.String(&logLevel, "IMGPROXY_LOG_LEVEL")
switch logFormat {
case "structured":
logrus.SetFormatter(&structuredFormatter{})
case "json":
logrus.SetFormatter(&logrus.JSONFormatter{})
case "gcp":
logrus.SetFormatter(&logrus.JSONFormatter{
FieldMap: logrus.FieldMap{
"level": "severity",
"msg": "message",
},
})
default:
logrus.SetFormatter(newPrettyFormatter())
}
levelLogLevel, err := logrus.ParseLevel(logLevel)
if err != nil {
levelLogLevel = logrus.InfoLevel
}
logrus.SetLevel(levelLogLevel)
if isSyslogEnabled() {
slHook, err := newSyslogHook()
if err != nil {
return fmt.Errorf("Unable to connect to syslog daemon: %s", err)
}
logrus.AddHook(slHook)
}
return nil
}