Remove colorizer hook, simplify logSplitter

This commit is contained in:
2024-01-07 08:42:00 -06:00
parent 06e5cd26d5
commit 1c5b3a1b6d
2 changed files with 13 additions and 28 deletions

32
logs.go
View File

@@ -1,7 +1,7 @@
package main
import (
"bytes"
"io"
"os"
"github.com/rs/zerolog"
@@ -10,38 +10,26 @@ import (
const timeFormat = "2006-01-02 15:04:05"
var (
standardOut = zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: timeFormat}
errorOut = zerolog.ConsoleWriter{Out: os.Stderr, TimeFormat: timeFormat}
buffer = new(bytes.Buffer)
bufferOut = zerolog.ConsoleWriter{Out: buffer, TimeFormat: ""}
stdConsole = zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: timeFormat}
errConsole = zerolog.ConsoleWriter{Out: os.Stderr, TimeFormat: timeFormat}
)
// logSplitter implements zerolog.LevelWriter
type logSplitter struct{}
type logSplitter struct {
std io.Writer
err io.Writer
}
// Write should not be called
func (l logSplitter) Write(p []byte) (n int, err error) {
return os.Stdout.Write(p)
return l.std.Write(p)
}
// WriteLevel write to the appropriate output
func (l logSplitter) WriteLevel(level zerolog.Level, p []byte) (n int, err error) {
if level <= zerolog.WarnLevel {
return standardOut.Write(p)
return l.std.Write(p)
} else {
return errorOut.Write(p)
return l.err.Write(p)
}
}
// JsonColorizerHook implements zerolog.Hook
// This hook is used to reformat the output of the JSON 'message' field to be like ConsoleWriter, but embedded within JSON
type JsonColorizerHook struct{}
func (h JsonColorizerHook) Run(e *zerolog.Event, level zerolog.Level, msg string) {
buffer.Reset()
bufferOut.Write([]byte(msg))
formattedMessage := buffer.String()
e.Str("text", msg) // Add the original message to the event
e.Str("message", formattedMessage)
}

View File

@@ -2,12 +2,10 @@ package main
import (
"context"
"fmt"
"net/http"
"net/http/cookiejar"
"os"
"os/signal"
"strconv"
"syscall"
"time"
_ "time/tzdata"
@@ -60,12 +58,11 @@ func init() {
// Use the custom console writer if we're in development
isDevelopment = environment == "development"
if isDevelopment {
log.Logger = zerolog.New(logSplitter{}).With().Timestamp().Logger()
log.Logger = zerolog.New(logSplitter{std: stdConsole, err: errConsole}).With().Timestamp().Logger()
} else {
hooked := log.Hook(JsonColorizerHook{})
log.Logger = zerolog.New(hooked).With().Timestamp().Logger()
log.Debug().Str("environment", environment).Msg("Environment Loaded")
log.Logger = zerolog.New(logSplitter{std: os.Stdout, err: os.Stderr}).With().Timestamp().Logger()
}
log.Debug().Str("environment", environment).Msg("Loggers Setup")
// Set discordgo's logger to use zerolog
discordgo.Logger = DiscordGoLogger