consolelog

package module
v0.0.0-...-cf60d6a Latest Latest
Warning

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

Go to latest
Published: Jul 21, 2018 License: MIT Imports: 10 Imported by: 0

README

A ConsoleWriter for https://github.com/rs/zerolog.

Screenshot

package main

import (
  "github.com/rs/zerolog"

  "github.com/karmi/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/karmi/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
}

Documentation

Overview

Package consolelog provides a writer for the "github.com/rs/zerolog" package.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConsoleWriter

type ConsoleWriter struct {
	Out        io.Writer
	TimeFormat string
	PartsOrder []string
	// contains filtered or unexported fields
}

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

It is adapted from the zerolog.ConsoleWriter; see: https://github.com/rs/zerolog/blob/master/console.go.

func NewConsoleWriter

func NewConsoleWriter(options ...func(w *ConsoleWriter)) ConsoleWriter

NewConsoleWriter creates and initializes a new ConsoleWriter.

Example
package main

import (
	"github.com/karmi/consolelog"
	"github.com/rs/zerolog"
)

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

	logger.Info().Str("foo", "bar").Msg("hello world")
}
Output:

INF hello world foo=bar
Example (Custom)
package main

import (
	"fmt"
	"strings"
	"time"

	"github.com/karmi/consolelog"
	"github.com/rs/zerolog"
)

func main() {
	output := consolelog.NewConsoleWriter(
		// Customize time formatting
		//
		func(w *consolelog.ConsoleWriter) {
			w.TimeFormat = time.RFC822
		},
		// 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")
	// => 19 Jul 18 15:50 CEST INFO  hello world foo=bar
}
Output:

func (ConsoleWriter) Formatter

func (w ConsoleWriter) Formatter(id string) Formatter

Formatter returns a formatter by id or the default formatter if none is found.

func (ConsoleWriter) SetFormatter

func (w ConsoleWriter) SetFormatter(id string, f Formatter)

SetFormatter registers a formatter function by id.

func (ConsoleWriter) Write

func (w ConsoleWriter) Write(p []byte) (n int, err error)

Write appends the output to Out.

type Formatter

type Formatter func(interface{}) string

Formatter transforms the input into a string.

Jump to

Keyboard shortcuts

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