authorizer/server/logs/logs.go

65 lines
1.4 KiB
Go
Raw Normal View History

package logs
import (
2024-01-22 11:29:32 +00:00
"fmt"
"os"
2024-01-22 11:29:32 +00:00
"path/filepath"
"time"
"github.com/sirupsen/logrus"
log "github.com/sirupsen/logrus"
)
2024-01-22 11:29:32 +00:00
// LogUTCFormatter helps in setting UTC time format for the logs
type LogUTCFormatter struct {
log.Formatter
}
2024-01-22 11:29:32 +00:00
// Format helps formatting time to UTC
func (u LogUTCFormatter) Format(e *log.Entry) ([]byte, error) {
e.Time = e.Time.UTC()
2024-01-22 11:29:32 +00:00
file := filepath.Base(e.Caller.File)
return []byte(fmt.Sprintf("[%s] %s:%d %s\n", e.Time.Format(time.RFC3339), file, e.Caller.Line, e.Message)), nil
}
func InitLog(cliLogLevel string) *log.Logger {
2024-01-22 11:29:32 +00:00
// log instance for the gin server
log := logrus.New()
2024-01-22 11:29:32 +00:00
log.SetFormatter(LogUTCFormatter{&logrus.TextFormatter{}})
if cliLogLevel == "" {
cliLogLevel = os.Getenv("LOG_LEVEL")
}
var logLevel logrus.Level
switch cliLogLevel {
case "debug":
logLevel = logrus.DebugLevel
case "info":
logLevel = logrus.InfoLevel
case "warn":
logLevel = logrus.WarnLevel
case "error":
logLevel = logrus.ErrorLevel
case "fatal":
logLevel = logrus.FatalLevel
case "panic":
logLevel = logrus.PanicLevel
default:
logLevel = logrus.InfoLevel
}
// set log level globally
logrus.SetLevel(logLevel)
// set log level for go-gin middleware
log.SetLevel(logLevel)
// show file path in log for debug or other log levels.
if logLevel != logrus.InfoLevel {
logrus.SetReportCaller(true)
log.SetReportCaller(true)
}
return log
}