mirror of
https://github.com/TecharoHQ/anubis.git
synced 2026-04-14 12:38:45 +00:00
feat(lib): add log filtering rules
Closes #942 Signed-off-by: Xe Iaso <me@xeiaso.net>
This commit is contained in:
36
lib/logging/stdlib.go
Normal file
36
lib/logging/stdlib.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package logging
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"log"
|
||||
"log/slog"
|
||||
"time"
|
||||
)
|
||||
|
||||
// handlerWriter is an io.Writer that calls a Handler.
|
||||
// It is used to link the default log.Logger to the default slog.Logger.
|
||||
//
|
||||
// Adapted from https://cs.opensource.google/go/go/+/refs/tags/go1.24.5:src/log/slog/logger.go;l=62
|
||||
type handlerWriter struct {
|
||||
h slog.Handler
|
||||
level slog.Leveler
|
||||
}
|
||||
|
||||
func (w *handlerWriter) Write(buf []byte) (int, error) {
|
||||
level := w.level.Level()
|
||||
if !w.h.Enabled(context.Background(), level) {
|
||||
return 0, nil
|
||||
}
|
||||
var pc uintptr
|
||||
|
||||
// Remove final newline.
|
||||
origLen := len(buf) // Report that the entire buf was written.
|
||||
buf = bytes.TrimSuffix(buf, []byte{'\n'})
|
||||
r := slog.NewRecord(time.Now(), level, string(buf), pc)
|
||||
return origLen, w.h.Handle(context.Background(), r)
|
||||
}
|
||||
|
||||
func StdlibLogger(next slog.Handler, level slog.Level) *log.Logger {
|
||||
return log.New(&handlerWriter{h: next, level: level}, "", log.LstdFlags)
|
||||
}
|
||||
Reference in New Issue
Block a user