logboek

package module
v0.6.1 Latest Latest
Warning

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

Go to latest
Published: Dec 29, 2023 License: Apache-2.0 Imports: 7 Imported by: 163

README

logboek — библиотека для организации структурированного и информативного вывода


Логер, каналы логирования и потоки вывода

При создании логера необходимо указать стримы, OutStream и ErrStream, которые должны подходить под интерфейс io.Writer (это может быть файл, стандартные потоки вывода, буфер или произвольная имплементация):

import "github.com/werf/logboek"

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

Настройки стримов позволяют задать параметры оформления, такие как префикс и тег, а также различные режимы работы. Они являются общими для OutStream и ErrStream, и, соответственно, для всех каналов, о которых пойдёт речь далее.

l.Streams()

Логер связан с каналами логирования Error, Warn, Default, Info и Debug. При использовании каналов Error и Warn все сообщения пишутся в ErrStream, а в случае с остальными в OutStream.

Каналы логирования позволяют организовать вывод для различных режимов работы приложения (подробный и дебаг режимы), ветвление и выполнение кода в случае того или иного активного канала (активация канала также включает вывод в нижестоящих каналах по приоритету):

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
}

Если каналы не требуются, то можно ограничиться использованием канала Default, методы которого доступны на верхнем уровне логера:

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

Default Logger

По умолчанию библиотека инициализирует DefaultLogger с предустановленными стримами os.Stdout и os.Stderr. Для работы с логером можно использовать сам экземпляр или верхнеуровневые функции библиотеки, которые соответствуют всем доступным методам логера:

import "github.com/werf/logboek"

logboek.DefaultLogger()

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AcceptedLevel

func AcceptedLevel() level.Level

func Colorize added in v0.4.3

func Colorize(style color.Style, a ...interface{}) string

func ColorizeF added in v0.5.0

func ColorizeF(style color.Style, format string, a ...interface{}) string

func ColorizeLn added in v0.5.0

func ColorizeLn(style color.Style, a ...interface{}) string

func Context

func Context(ctx context.Context) types.LoggerInterface

func Debug

func Debug() types.ManagerInterface

func Default

func Default() types.ManagerInterface

func DefaultLogger

func DefaultLogger() types.LoggerInterface

func ErrStream added in v0.5.0

func ErrStream() io.Writer

func Error

func Error() types.ManagerInterface

func FitText

func FitText(text string, options types.FitTextOptions) string

func Info

func Info() types.ManagerInterface

func IsAcceptedLevel

func IsAcceptedLevel(lvl level.Level) bool

func Log added in v0.5.0

func Log(a ...interface{})

func LogBlock

func LogBlock(headerOrFormat string, a ...interface{}) types.LogBlockInterface

func LogDetails added in v0.5.0

func LogDetails(a ...interface{})

func LogF

func LogF(format string, a ...interface{})

func LogFDetails

func LogFDetails(format string, a ...interface{})

func LogFHighlight

func LogFHighlight(format string, a ...interface{})

func LogFWithCustomStyle

func LogFWithCustomStyle(style color.Style, format string, a ...interface{})

func LogHighlight added in v0.5.0

func LogHighlight(a ...interface{})

func LogLn

func LogLn(a ...interface{})

func LogLnDetails

func LogLnDetails(a ...interface{})

func LogLnHighlight

func LogLnHighlight(a ...interface{})

func LogLnWithCustomStyle

func LogLnWithCustomStyle(style color.Style, a ...interface{})

func LogOptionalLn

func LogOptionalLn()

func LogProcess

func LogProcess(headerOrFormat string, a ...interface{}) types.LogProcessInterface

func LogProcessInline

func LogProcessInline(headerOrFormat string, a ...interface{}) types.LogProcessInlineInterface

func LogWithCustomStyle added in v0.5.0

func LogWithCustomStyle(style color.Style, a ...interface{})

func NewContext

func NewContext(ctx context.Context, logger types.LoggerInterface) context.Context

func NewLogger

func NewLogger(outStream, errStream io.Writer) types.LoggerInterface

func NewSubLogger

func NewSubLogger(outStream, errStream io.Writer) types.LoggerInterface

func OutStream added in v0.5.0

func OutStream() io.Writer

func Reset added in v0.4.3

func Reset()

func ResetModes added in v0.4.4

func ResetModes()

func ResetState added in v0.4.4

func ResetState()

func SetAcceptedLevel

func SetAcceptedLevel(lvl level.Level)

func Streams

func Streams() types.StreamsInterface

func Warn

func Warn() types.ManagerInterface

Types

This section is empty.

Directories

Path Synopsis
internal
pkg

Jump to

Keyboard shortcuts

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