mirror of
https://github.com/Xevion/banner.git
synced 2025-12-10 08:06:35 -06:00
Test JSON colorizing log hooks
This commit is contained in:
34
logs.go
34
logs.go
@@ -1,31 +1,47 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"os"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
)
|
||||
|
||||
// logOut implements zerolog.LevelWriter
|
||||
type logOut struct{}
|
||||
|
||||
// Write should not be called
|
||||
func (l logOut) Write(p []byte) (n int, err error) {
|
||||
return os.Stdout.Write(p)
|
||||
}
|
||||
|
||||
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: timeFormat}
|
||||
)
|
||||
|
||||
// logSplitter implements zerolog.LevelWriter
|
||||
type logSplitter struct{}
|
||||
|
||||
// Write should not be called
|
||||
func (l logSplitter) Write(p []byte) (n int, err error) {
|
||||
return os.Stdout.Write(p)
|
||||
}
|
||||
|
||||
// WriteLevel write to the appropriate output
|
||||
func (l logOut) WriteLevel(level zerolog.Level, p []byte) (n int, err error) {
|
||||
func (l logSplitter) WriteLevel(level zerolog.Level, p []byte) (n int, err error) {
|
||||
if level <= zerolog.WarnLevel {
|
||||
return standardOut.Write(p)
|
||||
} else {
|
||||
return errorOut.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)
|
||||
}
|
||||
|
||||
8
main.go
8
main.go
@@ -39,9 +39,11 @@ func init() {
|
||||
|
||||
// Use the custom console writer if we're in development
|
||||
isDevelopment = environment == "development"
|
||||
if isDevelopment {
|
||||
log.Logger = zerolog.New(logOut{}).With().Timestamp().Logger()
|
||||
}
|
||||
// if isDevelopment {
|
||||
// log.Logger = zerolog.New(logSplitter{}).With().Timestamp().Logger()
|
||||
// }
|
||||
hooked := log.Hook(JsonColorizerHook{})
|
||||
log.Logger = zerolog.New(hooked).With().Timestamp().Logger()
|
||||
log.Debug().Str("environment", environment).Msg("Environment Loaded")
|
||||
|
||||
// Set discordgo's logger to use zerolog
|
||||
|
||||
Reference in New Issue
Block a user