logging

package
v0.0.0-...-42f50ae Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2025 License: MIT Imports: 17 Imported by: 0

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

func (*CborDiagLogger) Write

func (inst *CborDiagLogger) Write(p []byte) (n int, err error)

type CborSpewLogger

type CborSpewLogger struct {
	Out io.Writer
}

func NewCborSpewLogger

func NewCborSpewLogger(out io.Writer) *CborSpewLogger

func (*CborSpewLogger) Write

func (inst *CborSpewLogger) Write(p []byte) (n int, err error)

type JsonIndentLogger

type JsonIndentLogger struct {
	Out    io.Writer
	Prefix string
	Indent string
}

func NewJsonIndentLogger

func NewJsonIndentLogger(out io.Writer) *JsonIndentLogger

func (*JsonIndentLogger) Write

func (inst *JsonIndentLogger) Write(p []byte) (n int, err error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL