logging

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Dec 17, 2024 License: MIT Imports: 11 Imported by: 10

Documentation

Index

Constants

View Source
const (
	CONSOLE = "console"
	JOURNAL = "systemd-journald"
)

Variables

This section is empty.

Functions

func AssertOutput

func AssertOutput(o string) error

AssertOutput returns an error if output is not a valid logger output.

func NewJournaldCore

func NewJournaldCore(identifier string, enab zapcore.LevelEnabler) zapcore.Core

NewJournaldCore returns a zapcore.Core that sends log entries to systemd-journald and uses the given identifier as a prefix for structured logging context that is sent as journal fields.

Types

type Config

type Config struct {
	// zapcore.Level at 0 is for info level.
	Level  zapcore.Level `yaml:"level" env:"LEVEL" default:"0"`
	Output string        `yaml:"output" env:"OUTPUT"`
	// Interval for periodic logging.
	Interval time.Duration `yaml:"interval" env:"INTERVAL" default:"20s"`
	Options  Options       `yaml:"options" env:"OPTIONS"`
}

Config defines Logger configuration.

func (*Config) SetDefaults added in v0.4.0

func (c *Config) SetDefaults()

SetDefaults implements defaults.Setter to configure the log output if it is not set: systemd-journald is used when Icinga DB is running under systemd, otherwise stderr.

func (*Config) Validate

func (c *Config) Validate() error

Validate checks constraints in the configuration and returns an error if they are violated.

type Logger

type Logger struct {
	*zap.SugaredLogger
	// contains filtered or unexported fields
}

Logger wraps zap.SugaredLogger and allows to get the interval for periodic logging.

func NewLogger

func NewLogger(base *zap.SugaredLogger, interval time.Duration) *Logger

NewLogger returns a new Logger.

func (*Logger) Interval

func (l *Logger) Interval() time.Duration

Interval returns the interval for periodic logging.

type Logging

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

Logging implements access to a default logger and named child loggers. Log levels can be configured per named child via Options which, if not configured, fall back on a default log level. Logs either to the console or to systemd-journald.

func NewLogging

func NewLogging(name string, level zapcore.Level, output string, options Options, interval time.Duration) (*Logging, error)

NewLogging takes the name and log level for the default logger, output where log messages are written to, options having log levels for named child loggers and returns a new Logging.

func NewLoggingFromConfig

func NewLoggingFromConfig(name string, c Config) (*Logging, error)

NewLoggingFromConfig returns a new Logging from Config.

func (*Logging) GetChildLogger

func (l *Logging) GetChildLogger(name string) *Logger

GetChildLogger returns a named child logger. Log levels for named child loggers are obtained from the logging options and, if not found, set to the default log level.

func (*Logging) GetLogger

func (l *Logging) GetLogger() *Logger

GetLogger returns the default logger.

type Options

type Options map[string]zapcore.Level

Options define child loggers with their desired log level.

func (*Options) UnmarshalText added in v0.4.0

func (o *Options) UnmarshalText(text []byte) error

UnmarshalText implements encoding.TextUnmarshaler to allow Options to be parsed by env.

This custom TextUnmarshaler is necessary as - for the moment - env does not support map[T]encoding.TextUnmarshaler. After <https://github.com/caarlos0/env/pull/323> got merged and a new env release was drafted, this method can be removed.

func (*Options) UnmarshalYAML added in v0.4.0

func (o *Options) UnmarshalYAML(unmarshal func(any) error) error

UnmarshalYAML implements yaml.InterfaceUnmarshaler to allow Options to be parsed go-yaml.

Jump to

Keyboard shortcuts

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