package
0.6.8
Repository: https://github.com/theopenlane/core.git
Documentation: pkg.go.dev

# README

Console writer for Zerolog

This is a wrapper around zerolog's console writer to provide better readability when printing logs to the console. The package doesn't come with many colorize options or field formatting but it does provide interfaces to modify them, which is what this package does.

At some point in any application there's going to be various preferences and needs in terms of log output and debugging, so the hope is that this package allows for easier extension of the underlying logger.

You can consume it similar to below:

package main

import (
  "github.com/rs/zerolog"

  "github.com/theopenlane/core/pkg/logx/consolelog"
)

func main() {
  output := consolelog.NewConsoleWriter()
  logger := zerolog.New(output).With().Timestamp().Logger()

  logger.Info().Str("foo", "bar").Msg("Hello world")

  // => 3:50PM INF Hello world foo=bar
}

Custom configuration

package main

import (
  "fmt"
  "strings"
  "time"

  "github.com/rs/zerolog"

  "github.com/theopenlane/core/pkg/logx/consolelog"
)

func main() {
  output := consolelog.NewConsoleWriter(
    // Customize time formatting
    //
    func(w *consolelog.ConsoleWriter) {
      w.TimeFormat = time.Stamp
    },
    // Customize "level" formatting
    //
    func(w *consolelog.ConsoleWriter) {
      w.SetFormatter(
        zerolog.LevelFieldName,
        func(i interface{}) string { return strings.ToUpper(fmt.Sprintf("%-5s", i)) })
    },
  )

  logger := zerolog.New(output).With().Timestamp().Logger()

  logger.Info().Str("foo", "bar").Msg("Hello world")

  // => Jul 19 15:50:00 INFO  Hello world foo=bar
}

# Functions

NewConsoleWriter creates and initializes a new ConsoleWriter.

# Structs

ConsoleWriter parses the JSON input and writes an ANSI-colorized output to out.

# Type aliases

Formatter transforms the input into a string.