diff --git a/logs.go b/logs.go index 16b8388..783e4b9 100644 --- a/logs.go +++ b/logs.go @@ -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) -} diff --git a/main.go b/main.go index 1be1d4a..5c4607f 100644 --- a/main.go +++ b/main.go @@ -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