Skip to content

werf/logboek

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logboek — a library for structured and informative output

Logger, channels, and streams

When creating a logger, you need to specify the streams, OutStream and ErrStream, which must adhere to the io.Writer interface (this can be a file, standard output streams, a buffer, or any custom implementation):

import "github.com/werf/logboek"

// NewLogger(outStream, errStream io.Writer) *Logger
l := logboek.NewLogger(os.Stdout, os.Stderr)

Stream settings allow you to define formatting parameters such as prefix and tag, as well as various modes of operation. These settings apply to both OutStream and ErrStream, and consequently to all channels that will be discussed later.

l.Streams()

The logger is connected to the log channels Error, Warn, Default, Info, and Debug. When using the Error and Warn channels, all messages are written to ErrStream, while for the others, they go to OutStream.

Log channels allow you to organize the output for various application modes (verbose and debug modes), branch execution, and control flow depending on the active channel (activating a channel also triggers output to lower-priority channels):

import (
    "github.com/werf/logboek"
    "github.com/werf/logboek/pkg/level"
)

switch mode {
case "verbose":
    l.SetAcceptedLevel(level.Info)
case "debug":
    l.SetAcceptedLevel(level.Debug)
case "quiet":
    l.SetAcceptedLevel(level.Error)  
}

...

if l.Debug().IsAccepted() {
  ... // do and print something special
}

If channels are not required, you can simply use the Default channel, whose methods are available at the top level of the logger:

l.LogLn() // l.Default().LogLn()
l.LogF()  // l.Default().LogF()
...

Default logger

By default, the library initializes the DefaultLogger with preset streams os.Stdout and os.Stderr. You can interact with the logger using the instance itself or the high-level library functions that correspond to all available logger methods:

import "github.com/werf/logboek"

logboek.DefaultLogger()

logboek.Default() // logboek.DefaultLogger().Default()
logboek.LogLn()   // logboek.DefaultLogger().LogLn()
logboek.Streams() // logboek.DefaultLogger().Streams()
...

About

A library for structured and informative output.

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •