Add telemetry
This commit is contained in:
@@ -3,6 +3,7 @@ package logging
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
@@ -28,7 +29,9 @@ type Config struct {
|
||||
// - File set: JSON → lumberjack rotating file
|
||||
// - File empty + TTY: colored ConsoleWriter → stderr
|
||||
// - File empty + not TTY: JSON → stderr (for systemd journal)
|
||||
func Setup(cfg Config) zerolog.Logger {
|
||||
// Extra writers (e.g., OTLP log bridge) are added via io.MultiWriter so logs
|
||||
// are written to both the primary destination and any extra writers.
|
||||
func Setup(cfg Config, extraWriters ...io.Writer) zerolog.Logger {
|
||||
// Parse log level
|
||||
level, err := zerolog.ParseLevel(cfg.Level)
|
||||
if err != nil || cfg.Level == "" {
|
||||
@@ -48,20 +51,32 @@ func Setup(cfg Config) zerolog.Logger {
|
||||
MaxAge: cfg.MaxAgeDays,
|
||||
Compress: cfg.Compress,
|
||||
}
|
||||
logger = zerolog.New(jack).With().Timestamp().Caller().Logger()
|
||||
var w io.Writer = jack
|
||||
if len(extraWriters) > 0 {
|
||||
w = io.MultiWriter(append([]io.Writer{jack}, extraWriters...)...)
|
||||
}
|
||||
logger = zerolog.New(w).With().Timestamp().Caller().Logger()
|
||||
} else {
|
||||
fi, err := os.Stderr.Stat()
|
||||
isTTY := err == nil && (fi.Mode()&os.ModeCharDevice) != 0
|
||||
if isTTY {
|
||||
// Dev mode: colored console
|
||||
// Dev mode: colored console (extra writers get JSON, console gets pretty)
|
||||
cw := zerolog.ConsoleWriter{
|
||||
Out: os.Stderr,
|
||||
TimeFormat: time.RFC3339,
|
||||
}
|
||||
logger = zerolog.New(cw).With().Timestamp().Caller().Logger()
|
||||
var w io.Writer = cw
|
||||
if len(extraWriters) > 0 {
|
||||
w = io.MultiWriter(append([]io.Writer{cw}, extraWriters...)...)
|
||||
}
|
||||
logger = zerolog.New(w).With().Timestamp().Caller().Logger()
|
||||
} else {
|
||||
// Systemd journal: JSON to stderr
|
||||
logger = zerolog.New(os.Stderr).With().Timestamp().Caller().Logger()
|
||||
var w io.Writer = os.Stderr
|
||||
if len(extraWriters) > 0 {
|
||||
w = io.MultiWriter(append([]io.Writer{os.Stderr}, extraWriters...)...)
|
||||
}
|
||||
logger = zerolog.New(w).With().Timestamp().Caller().Logger()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user