Spaces:
Runtime error
Runtime error
| package utils | |
| import ( | |
| "encoding/json" | |
| "os" | |
| "time" | |
| "github.com/rs/zerolog" | |
| "github.com/rs/zerolog/log" | |
| "github.com/rs/zerolog/pkgerrors" | |
| "google.golang.org/protobuf/encoding/protojson" | |
| pb "google.golang.org/protobuf/proto" | |
| ) | |
| const DefaultLogLevel = zerolog.InfoLevel | |
| var ( | |
| // LogLevel Used for flags | |
| LogLevel zerolog.Level | |
| // LogJson Used for flags | |
| LogJson bool | |
| ) | |
| func ConfigureLogger() { | |
| zerolog.TimeFieldFormat = time.RFC3339Nano | |
| zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack | |
| protoMarshal := protojson.MarshalOptions{ | |
| EmitUnpopulated: true, | |
| } | |
| zerolog.InterfaceMarshalFunc = func(i any) ([]byte, error) { | |
| if m, ok := i.(pb.Message); ok { | |
| return protoMarshal.Marshal(m) | |
| } | |
| return json.Marshal(i) | |
| } | |
| log.Logger = zerolog.New(os.Stdout). | |
| With(). | |
| Timestamp(). | |
| Stack(). | |
| Logger() | |
| if !LogJson { | |
| log.Logger = log.Output(zerolog.ConsoleWriter{ | |
| Out: os.Stdout, | |
| TimeFormat: time.StampMicro, | |
| }) | |
| } | |
| zerolog.SetGlobalLevel(LogLevel) | |
| } | |