Documentation
¶
Index ¶
Constants ¶
const ( CONSOLE = "console" JOURNAL = "systemd-journald" )
Variables ¶
This section is empty.
Functions ¶
func AssertOutput ¶
AssertOutput returns an error if output is not a valid logger output.
func Error ¶ added in v0.7.0
Error returns a zap.Field for logging the provided error. This function checks if the error includes a stack trace from the pkg/errors library. If a stack trace is present, it is suppressed in the log output because logging a stack trace is not necessary. Otherwise, the error is logged normally.
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.
type CoreFactory ¶ added in v0.8.0
type CoreFactory func(zap.AtomicLevel) zapcore.Core
CoreFactory is a function type that creates a zapcore.Core based on the provided zap.AtomicLevel.
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.
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 ¶
NewLoggingFromConfig returns a new Logging from Config.
func NewLoggingWithFactory ¶ added in v0.8.0
func NewLoggingWithFactory(name string, level zapcore.Level, interval time.Duration, f CoreFactory) *Logging
NewLoggingWithFactory constructs a new Logging with the provided CoreFactory.
This is useful if you want to customize the zapcore.Core creation, e.g. for testing purposes. Note that the returned Logging instance will not have any options set, i.e. all child loggers will inherit the default log level. If you need options, set them manually after obtaining the Logging instance.
Example usage:
logs := logging.NewLoggingWithFactory("testing", zapcore.DebugLevel, time.Second, func(level zap.AtomicLevel) zapcore.Core {
return zaptest.NewLogger(t, zaptest.Level(level.Level())).Core()
})
childLogger := logs.GetChildLogger("my-component")
The above example creates a Logging instance that logs to the test logger provided by the zaptest package. All loggers created from this Logging instance will log to the same test logger, which will only be visible in the test output when the test fails or when the test is run with the -v flag.
func (*Logging) ForceLog ¶ added in v0.6.3
ForceLog results in every message being logged.
This zap.Option is the opposite of zap.IncreaseLevel, it just decreases the log level to debug. Since zap's architecture does not allow this with the same zapcore.Core, it replaces the core with a freshly created one from the Logging's core factory.
func (*Logging) GetChildLogger ¶
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.
type Options ¶
Options define child loggers with their desired log level.
func (*Options) UnmarshalText ¶ added in v0.4.0
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.