Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var LoggingFlags = []cli.Flag{ &cli.StringFlag{ Name: "logFile", Category: "logging", EnvVars: []string{"BOXER_LOG_FILE"}, Value: "", }, &cli.StringFlag{ Name: "logLevel", Category: "logging", DefaultText: "info", EnvVars: []string{"BOXER_LOG_LEVEL"}, Action: func(context *cli.Context, s string) error { var lvl zerolog.Level switch strings.ToLower(s) { case "trace": lvl = zerolog.TraceLevel break case "debug": lvl = zerolog.DebugLevel break case "info": lvl = zerolog.InfoLevel break case "warn": lvl = zerolog.WarnLevel break case "error": lvl = zerolog.ErrorLevel break case "fatal": lvl = zerolog.FatalLevel break case "panic": lvl = zerolog.PanicLevel break default: return eh.Errorf("unhandled log level %s", s) } zerolog.SetGlobalLevel(lvl) return nil }, }, &cli.StringFlag{ Name: "logFormat", Category: "logging", DefaultText: "json", EnvVars: []string{"BOXER_LOG_FORMAT"}, Action: func(context *cli.Context, s string) error { logFile := context.String("logFile") var w *os.File if logFile == "" || logFile == "-" { w = os.Stderr } else { var err error w, err = os.OpenFile(logFile, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0o666) if err != nil { return eb.Build().Str("logFile", logFile).Errorf("unable to open log file: %w", err) } } switch s { case "console": var cborEncMode cbor.EncMode var err error cborEncMode, err = cbor.CanonicalEncOptions().EncMode() if err != nil { return eh.Errorf("unable to create cbor encoding mode: %w", err) } const threshhold = 70 var pp *cborConsolePrinter pp, err = newCborConsolePrinter(threshhold) if err != nil { return eh.Errorf("unable to create cbor console printer: %w", err) } log.Logger = log.Output(zerolog.ConsoleWriter{ Out: w, FormatFieldValue: func(i interface{}) string { return formatFieldValue(i, pp) }, FormatErrFieldValue: func(i interface{}) string { return formatFieldValue(i, pp) }, TimeFormat: time.RFC3339}) zerolog.InterfaceMarshalFunc = func(v any) (b []byte, err error) { var se string se, err = embeddAsCbor(cborEncMode, v) if err != nil { return nil, err } return []byte(se), nil } break case "diag": log.Logger = log.Output(NewCborDiagLogger(w)) break case "spew": log.Logger = log.Output(NewCborSpewLogger(w)) break case "json": log.Logger = log.Output(NewJsonIndentLogger(w)) break case "cbor": checkZeroLogCborBuild() log.Logger = log.Output(w) break default: return eh.Errorf("unhandled log format %s", s) } return nil }, }, }
Functions ¶
func ConvertStringKeyedMaps ¶
func ConvertStringKeyedMaps(val interface{}) interface{}
func SetupZeroLog ¶
func SetupZeroLog()
Types ¶
type CborDiagLogger ¶
type CborDiagLogger struct {
Out io.StringWriter
}
func NewCborDiagLogger ¶
func NewCborDiagLogger(out io.StringWriter) *CborDiagLogger
type CborSpewLogger ¶
func NewCborSpewLogger ¶
func NewCborSpewLogger(out io.Writer) *CborSpewLogger
type JsonIndentLogger ¶
func NewJsonIndentLogger ¶
func NewJsonIndentLogger(out io.Writer) *JsonIndentLogger
Click to show internal directories.
Click to hide internal directories.