incorporated logrus into Echo logging

This commit is contained in:
2025-09-14 16:45:29 -06:00
parent cc8c12e24d
commit 12f8c3f2cb
2 changed files with 66 additions and 1 deletions
+64
View File
@@ -9,12 +9,76 @@
package main
import (
"io"
"time"
"github.com/labstack/echo/v4"
glog "github.com/labstack/gommon/log"
log "github.com/sirupsen/logrus"
)
func toglog(l log.Level) glog.Lvl {
switch l {
case log.DebugLevel:
return glog.DEBUG
case log.InfoLevel:
return glog.INFO
case log.WarnLevel:
return glog.WARN
case log.ErrorLevel:
return glog.ERROR
default:
return glog.OFF
}
}
func fromglog(l glog.Lvl) log.Level {
switch l {
case glog.DEBUG:
return log.DebugLevel
case glog.INFO:
return log.InfoLevel
case glog.WARN:
return log.WarnLevel
case glog.ERROR:
return log.ErrorLevel
default:
return log.PanicLevel
}
}
// EchoLogrusAdapter implements echo.Logger using logrus
type EchoLogrusAdapter struct{}
func (l *EchoLogrusAdapter) Output() io.Writer { return log.StandardLogger().Out }
func (l *EchoLogrusAdapter) SetOutput(w io.Writer) { log.SetOutput(w) }
func (l *EchoLogrusAdapter) Prefix() string { return "" }
func (l *EchoLogrusAdapter) SetPrefix(p string) {}
func (l *EchoLogrusAdapter) Level() glog.Lvl { return toglog(log.GetLevel()) }
func (l *EchoLogrusAdapter) SetLevel(lvl glog.Lvl) { log.SetLevel(fromglog(lvl)) }
func (l *EchoLogrusAdapter) Print(i ...interface{}) { log.Print(i...) }
func (l *EchoLogrusAdapter) Printf(format string, args ...interface{}) { log.Printf(format, args...) }
func (l *EchoLogrusAdapter) Printj(j glog.JSON) { log.WithFields(log.Fields(j)).Print() }
func (l *EchoLogrusAdapter) Debug(i ...interface{}) { log.Debug(i...) }
func (l *EchoLogrusAdapter) Debugf(format string, args ...interface{}) { log.Debugf(format, args...) }
func (l *EchoLogrusAdapter) Debugj(j glog.JSON) { log.WithFields(log.Fields(j)).Debug() }
func (l *EchoLogrusAdapter) Info(i ...interface{}) { log.Info(i...) }
func (l *EchoLogrusAdapter) Infof(format string, args ...interface{}) { log.Infof(format, args...) }
func (l *EchoLogrusAdapter) Infoj(j glog.JSON) { log.WithFields(log.Fields(j)).Info() }
func (l *EchoLogrusAdapter) Warn(i ...interface{}) { log.Warn(i...) }
func (l *EchoLogrusAdapter) Warnf(format string, args ...interface{}) { log.Warnf(format, args...) }
func (l *EchoLogrusAdapter) Warnj(j glog.JSON) { log.WithFields(log.Fields(j)).Warn() }
func (l *EchoLogrusAdapter) Error(i ...interface{}) { log.Error(i...) }
func (l *EchoLogrusAdapter) Errorf(format string, args ...interface{}) { log.Errorf(format, args...) }
func (l *EchoLogrusAdapter) Errorj(j glog.JSON) { log.WithFields(log.Fields(j)).Error() }
func (l *EchoLogrusAdapter) Fatal(i ...interface{}) { log.Fatal(i...) }
func (l *EchoLogrusAdapter) Fatalf(format string, args ...interface{}) { log.Fatalf(format, args...) }
func (l *EchoLogrusAdapter) Fatalj(j glog.JSON) { log.WithFields(log.Fields(j)).Fatal() }
func (l *EchoLogrusAdapter) Panic(i ...interface{}) { log.Panic(i...) }
func (l *EchoLogrusAdapter) Panicf(format string, args ...interface{}) { log.Panicf(format, args...) }
func (l *EchoLogrusAdapter) Panicj(j glog.JSON) { log.WithFields(log.Fields(j)).Panic() }
func (l *EchoLogrusAdapter) SetHeader(h string) {}
// Custom Logrus middleware
func LogrusMiddleware(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
+2 -1
View File
@@ -17,9 +17,10 @@ import (
func setupEcho() *echo.Echo {
e := echo.New()
e.Logger = &EchoLogrusAdapter{}
e.Renderer = &ui.TemplateRenderer{}
e.Use(middleware.Recover())
e.Use(LogrusMiddleware)
e.Renderer = &ui.TemplateRenderer{}
e.GET("/img/*", ui.AmWrap(ui.AmServeImage))
e.GET("/", ui.AmWrap(func(ctxt ui.AmContext) (string, any, error) {
ctxt.VarMap().Set("amsterdam_pageTitle", "My Front Page")