glog – git.sr.ht/~poldi1405/glog Index | Examples | Files | Directories

package glog

import "git.sr.ht/~poldi1405/glog"

Package glog aims to be the "one for all" logging package. It has a wide variety of features. To "handle errors gracefully" most times when a Setting-Function is called, no error is returned. If the specified level does not exist, execution is just silently aborted.

An important note is that *all* log-level ranges are inclusive. This means that "below …" actually means "below or equal to …".

Index

Examples

Variables

var (

	// OverrideColor allows overwriting the coloring mode. 0 = auto;
	// 1 = always; -1 = never
	//
	// This can also be set using the Environment-variable `GLOG_COLOR`
	OverrideColor int8
	// LogLevel indicates the level of verbosity to use when logging.
	// Messages below the specified level are discarded. Usually you want to
	// use SetLevel() to ensure that overrides are correctly applied.
	//
	// This can also be set using the Environment-variable `GLOG_LEVEL`
	LogLevel = WARNING
)
var (
	// TimeFormat specifies the formatting of the timestamp to use. The
	// default is ISO-8601 which corresponds to:
	TimeFormat = "2006-01-02T15:04:05.000000-0700"
	// LogFormatter contains the function used to actually format logged
	// statements. Changing this allows complete control over the format of
	// log messages.
	LogFormatter FormatFunction = defaultLogFormat

	// EnableMetaLogging starts logging the inner workings of this library
	// and is usually only used when developing but can be helpful if there
	// are issues with your logging. If you happen to find a bug, please
	// don't hesitate it at: https://todo.sr.ht/~poldi1405/issues
	// (no account needed)
	EnableMetaLogging bool
	// ShortCaller indicates whether the printed caller should be shortened
	// to only include the package and it's function instead of the entire
	// import-path.
	ShortCaller = true
	// ShowCallerLine displays file and line as the caller instead of the
	// function that called.
	ShowCallerLine bool
	// PanicLogFile is the file panics are logged to.
	PanicLogFile = "panic.log"
)

Functions

func AddLogFile

func AddLogFile(filepath string, lvls ...Level) (*os.File, error)

AddLogFile opens the specified files and adds it to the specified levels

func AddOutput

func AddOutput(lvl Level, output io.Writer)

AddOutput adds the specified output to the list of outputs for the level

func AddOutputAbove

func AddOutputAbove(lvl Level, output io.Writer)

AddOutputAbove adds the specified output to the list of outputs for the levels including and above the specified levels.

Example

Code:

{
	AddOutputAbove(WARNING, os.Stderr)
	// is equal to
	AddOutput(WARNING, os.Stderr)
	AddOutput(ERROR, os.Stderr)
	AddOutput(FATAL, os.Stderr)
}

func AddOutputBelow

func AddOutputBelow(lvl Level, output io.Writer)

AddOutputBelow adds the specified output to the list of outputs for the specified levels.

Example

Code:

{
	AddOutputBelow(WARNING, os.Stderr)
	// is equal to
	AddOutput(WARNING, os.Stderr)
	AddOutput(INFO, os.Stderr)
	AddOutput(DEBUG, os.Stderr)
	AddOutput(TRACE, os.Stderr)
}

func AddOutputBetween

func AddOutputBetween(lowerLevel, upperLevel Level, output io.Writer)

AddOutputBetween adds the specified output to the list of outputs for all specified levels.

Example

Code:

{
	AddOutputBetween(DEBUG, ERROR, os.Stderr)
	// is equal to
	AddOutput(DEBUG, os.Stderr)
	AddOutput(INFO, os.Stderr)
	AddOutput(WARNING, os.Stderr)
	AddOutput(ERROR, os.Stderr)
}

func Debug

func Debug(message ...interface{})

Debug logs a message at the DEBUG level

func Debugf

func Debugf(format string, values ...interface{})

Debugf formats the input values as specified and writes them to the according channels

func Error

func Error(message ...interface{})

Error logs a message at the ERROR level

func Errorf

func Errorf(format string, values ...interface{})

Errorf formats the input values as specified and writes them to the according channels

func Fatal

func Fatal(message ...interface{})

Fatal logs a message at the FATAL level it is recommended to exit the program afterwards.

func FatalStyle

func FatalStyle(content ...interface{}) string

FatalStyle is the default style for fatal logmessages. Just in case you want to restore it after changing it.

func Fatalf

func Fatalf(format string, values ...interface{})

Fatalf formats the input values as specified and writes them to the according channel. It is recommended to exit the program afterwards.

func GetCaller

func GetCaller(skipFrames int) string

GetCaller returns the calling function. skipFrames indicates how far up the ladder we go when looking for the caller (2 = direct caller, 3 = caller of the caller, …). You can use this for more information in your log messages when creating custom formatters. Note that this is *relatively* expensive.

func Info

func Info(message ...interface{})

Info logs a message at the INFO level

func Infof

func Infof(format string, values ...interface{})

Infof formats the input values as specified and writes them to the according channels

func Log

func Log(lvl Level, message ...interface{})

Log logs a message at the specified level

func Logf

func Logf(lvl Level, format string, values ...interface{})

Logf formats the input values as specified and writes them to the according channels

func PanicHandler

func PanicHandler()

PanicHandler logs a panic if it occurs. A panic is always written to panic.log and then passed on. Under *no* circumstances should this be used as a way to ensure a programs stability. Make your own function for that.

func PlainStyle

func PlainStyle(content ...interface{}) string

PlainStyle is an implementation of StyleFunction that does not format output.

func SetLevel

func SetLevel(lvl Level) bool

SetLevel allows setting the loglevel while preserving the level set using the environment

func SetOutput

func SetOutput(lvl Level, output io.Writer)

SetOutput removes all outputs and replaces them with the specified output. To discard log messages to a level set the loglevel accordingly or use `io.Discard`

func SetOutputAbove

func SetOutputAbove(lvl Level, output io.Writer)

SetOutputAbove removes all outputs and replaces them with the specified output. This is repeated for all specified levels. For more information on the inner workings of SetOutput* see the SetOutput() function.

Example

Code:

{
	SetOutputAbove(WARNING, os.Stderr)
	// is equal to
	SetOutput(WARNING, os.Stderr)
	SetOutput(ERROR, os.Stderr)
	SetOutput(FATAL, os.Stderr)
}

func SetOutputBelow

func SetOutputBelow(lvl Level, output io.Writer)

SetOutputBelow removes all outputs and replaces them with the specified output. This is repeated for all specified levels. For more information on the inner workings of SetOutput* see the SetOutput() function.

Example

Code:

{
	SetOutputBelow(WARNING, os.Stderr)
	// is equal to
	SetOutput(WARNING, os.Stderr)
	SetOutput(INFO, os.Stderr)
	SetOutput(DEBUG, os.Stderr)
	SetOutput(TRACE, os.Stderr)
}

func SetOutputBetween

func SetOutputBetween(lowerLevel, upperLevel Level, output io.Writer)

SetOutputBetween removes all outputs and replaces them with the specified output. This is executed for all specified levels. For more information on the inner workings of SetOutput* see the SetOutput() function.

Example

Code:

{
	SetOutputBetween(DEBUG, ERROR, os.Stderr)
	// is equal to
	SetOutput(DEBUG, os.Stderr)
	SetOutput(INFO, os.Stderr)
	SetOutput(WARNING, os.Stderr)
	SetOutput(ERROR, os.Stderr)
}

func SetShowCaller

func SetShowCaller(lvl Level, show bool)

SetShowCaller allows defining for what levels the caller is displayed in the Log. By default the caller is shown for TRACE, DEBUG, ERROR, and FATAL.

func SetStyle

func SetStyle(lvl Level, styler StyleFunction)

SetStyle allows customizing the look of the *error-level*. This can also be used for changing the names of the loglevels.

func Trace

func Trace(message ...interface{})

Trace logs a message at the TRACE level

func Tracef

func Tracef(format string, values ...interface{})

Tracef formats the input values as specified and writes them to the according channels

func Warn

func Warn(message ...interface{})

Warn logs a message at the WARNING level

func Warnf

func Warnf(format string, values ...interface{})

Warnf formats the input values as specified and writes them to the according channels

Types

type FormatFunction

type FormatFunction func(Level, time.Time, string, string) string

FormatFunction allow defining custom logging formats and changing around the order. If Caller is not set all I can do at the moment is passing an empty string.

The string arguments correspond to caller and message.

type Level

type Level uint8

Level is an alias to allow attaching functions to Loglevels.

const (
	TRACE Level = iota
	DEBUG
	INFO
	WARNING
	ERROR
	FATAL
)

func ParseLevel

func ParseLevel(level string, fallback Level) Level

ParseLevel takes in a string and returns the corresponding loglevel. If it does not exist, default is returned instead.

func (Level) Short

func (lvl Level) Short() string

Short returns a levels representation in log

func (Level) String

func (lvl Level) String() string

String implements the fmt.Stringer interface to allow use of levels in fmt calls.

type StyleFunction

type StyleFunction func(...interface{}) string

StyleFunction is a kind of function that is used for styling. I know, who would have thought.

Source Files

caller.go docs.go env.go init.go levels.go logfile.go metalog.go output.go print.go recover.go settings.go style.go

Directories

PathSynopsis
logrotationPackage logrotation provides a writer that automatically rotates logfiles if the set maximum size is reached or exceeded.
try-it-out
Version
v1.0.1 (latest)
Published
Dec 6, 2021
Platform
linux/amd64
Imports
10 packages
Last checked
1 week ago

Tools for package owners.