logging

package module
v0.6.1 Latest Latest
Warning

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

Go to latest
Published: Aug 8, 2026 License: MIT Imports: 7 Imported by: 0

README

Logging for Go

  • Reads LOGLEVEL environment variable automatically to filter logs
  • LOGLEVEL can be updated at runtime if
  • Default logger has log level as prefix and the log level uses ANSI colors
  • NewLogger allows creating custom loggers with custom prefixes and suffixes as well as optional timestamp prefixes.

Development

Requires at least Go 1.26.0

  1. Install dependencies

    go mod download
    
  2. Generate updated String method for LogLevel if it is changed

    go Generate ./...
    
  3. Run tests

    go test ./... -v -failfast -race
    

Documentation

Overview

Logging package allows creating custom loggers with prefixes. The pacage also includes default logging functions that can be used without creating a custom logger.

Part of logging package is also logging/loglevel:

Initialize logging level by reading case-insensitive environment variable LOGLEVEL.
Valid values ordered from least verbose to most verbose are CRITICAL, ERROR, WARN, INFO, DEBUG.
Level can also be set programmatically by editing loglevel.Level to any of the supported values.

Index

Constants

This section is empty.

Variables

View Source
var Default = NewLogger(LoggerConfig{
	OutPrefix:     ansi.ColoredText{Color: ansi.None, Text: ""},
	DebugPrefix:   ansi.ColoredText{Color: ansi.Purple, Text: "DEBUG"},
	OkPrefix:      ansi.ColoredText{Color: ansi.Green, Text: "OK"},
	PendingPrefix: ansi.ColoredText{Color: ansi.Cyan, Text: "PENDING"},
	InfoPrefix:    ansi.ColoredText{Color: ansi.Blue, Text: "INFO"},
	WarnPrefix:    ansi.ColoredText{Color: ansi.Yellow, Text: "WARNING"},
	ErrPrefix:     ansi.ColoredText{Color: ansi.Red, Text: "ERROR"},
})

Default logger. Out has no prefix, others have colored loglevel.LogLevel as prefix.

Functions

This section is empty.

Types

type Logger

type Logger struct {
	// contains filtered or unexported fields
}

func DefaultT

func DefaultT() *Logger

Returns default logger with RFC3339 timestamps.

func NewLogger

func NewLogger(config LoggerConfig) *Logger

func (*Logger) Config

func (l *Logger) Config() *LoggerConfig

Return config the config for this logger. Pointer values are copied so they cannot be used to edit existing loggers.

func (*Logger) Debug

func (l *Logger) Debug(format string, args ...any) (int, error)

Writes to stdout if LOGLEVEL is at least DEBUG. Indents all lines to same level as other log functions.

func (*Logger) Err

func (l *Logger) Err(format string, args ...any) (int, error)

Writes to stderr if LOGLEVEL is at least ERROR. Indents all lines to same level.

func (*Logger) Fatal

func (l *Logger) Fatal(format string, args ...any)

Same as Err but with panic.

func (*Logger) Info

func (l *Logger) Info(format string, args ...any) (int, error)

Writes to stdout if LOGLEVEL is at least INFO. Indents all lines to same level.

func (*Logger) LogLevel

func (l *Logger) LogLevel() loglevel.LogLevel

func (*Logger) Ok

func (l *Logger) Ok(format string, args ...any) (int, error)

Writes to stdout if LOGLEVEL is at least INFO. Indents all lines to same level.

func (*Logger) Out

func (l *Logger) Out(format string, args ...any) (int, error)

Writes to stdout regardless of LOGLEVEL. Indents all lines to same level as other default log functions

func (*Logger) Pending

func (l *Logger) Pending(format string, args ...any) (int, error)

Writes to stdout if LOGLEVEL is at least INFO. Indents all lines to same level.

func (*Logger) Warn

func (l *Logger) Warn(format string, args ...any) (int, error)

Writes to stderr if LOGLEVEL is at least WARN. Indents all lines to same level.

type LoggerConfig

type LoggerConfig struct {
	LogLevel      *loglevel.LogLevel     // Set log level for this logger. Will default to global log level.
	Time          *timeprefix.TimePrefix // Start logs with current time (UTC or local) with specified format.
	OutPrefix     ansi.ColoredText
	OutSuffix     ansi.ColoredText
	DebugPrefix   ansi.ColoredText
	DebugSuffix   ansi.ColoredText
	OkPrefix      ansi.ColoredText
	OkSuffix      ansi.ColoredText
	PendingPrefix ansi.ColoredText
	PendingSuffix ansi.ColoredText
	InfoPrefix    ansi.ColoredText
	InfoSuffix    ansi.ColoredText
	WarnPrefix    ansi.ColoredText
	WarnSuffix    ansi.ColoredText
	ErrPrefix     ansi.ColoredText
	ErrSuffix     ansi.ColoredText
	FatalPrefix   ansi.ColoredText
	FatalSuffix   ansi.ColoredText
}

Prefixes should only contain visible characters as this is used to determine indent size

Directories

Path Synopsis
internal
pkg
ansi
Contains ANSI escape codes for different (high intensity) colors.
Contains ANSI escape codes for different (high intensity) colors.
loglevel
Initialize logging level by reading case-insensitive environment variable LOGLEVEL.
Initialize logging level by reading case-insensitive environment variable LOGLEVEL.

Jump to

Keyboard shortcuts

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