logger

package
v0.0.0-...-9102f00 Latest Latest
Warning

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

Go to latest
Published: Sep 11, 2023 License: MIT Imports: 13 Imported by: 0

README

Logger

The app/logger package TODO.

Code example:

// TODO

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	DefaultAppLoggerUnitName = "app_logger"
	Logger                   *appLogger
)
View Source
var (
	ErrBadTimeFormat = errors.New("bad log time format, must be one of [none, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, RFC822, RFC822Z, RFC850, RubyDate, Unix, UnixMs, UnixMicro, UnixNano]")

	ErrBadLogLevel = errors.New("bad log level, must be one of [disabled, trace, debug, info, warning, error, fatal, panic]")

	ErrLogFileNotSpecified = errors.New("log file not specified")

	ErrBadFilePermissions = errors.New("bad file permissions")

	ErrBadDirPermissions = errors.New("bad directory permissions")

	ErrLogFileOutputConfigIsNil = errors.New("log file output config is nil")

	ErrLogConsoleOutputConfigIsNil = errors.New("log console output config is nil")
)

Errors

Functions

func Close

func Close() error

func Create

func Create(config *Config) error

Create creates the app_logger and adds it into the default app unit manager (app.M). The unit's name is 'app_logger'.

func Get

func Get() *zerolog.Logger

Get returns a pointer to the global zerolog logger (same as zerolog &log.Logger).

func RegisterHooks

func RegisterHooks(hooks ...zerolog.Hook)

RegisterHooks allows to register zerolog.Hook objects for advanced message processing, see igulib/telegram_notifier as an example.

Types

type Config

type Config struct {
	// LogLevel must be one of the following:
	// [disabled, trace, debug, info, warning, error, fatal, panic].
	// If not specified, the default log level is "debug".
	LogLevel string `yaml:"log_level" json:"log_level"`

	// TimeFormat must be one of the following:
	// [disabled, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, RFC822, RFC822Z, RFC850, RubyDate,
	// Unix, UnixMs, UnixMicro, UnixNano].
	// See golang time package documentation for more info about date/time formats.
	// If not specified, the default time format is RFC3339.
	TimeFormat string `yaml:"time_format" json:"time_format"`

	// UseUTC allows to use UTC time instead of local time.
	// This doesn't have effect if one of the unix timestamp formats is selected as TimeFormat
	// or if TimeFormat is "disabled".
	// The local time is used by default.
	UseUTC bool `yaml:"use_utc" json:"use_utc"`

	LogFiles []FileOutputConfig    `yaml:"log_files" json:"log_files"`
	Console  []ConsoleOutputConfig `yaml:"console" json:"console"`
}

func ParseYamlConfig

func ParseYamlConfig(data []byte) (*Config, error)

type ConsoleOutputConfig

type ConsoleOutputConfig struct {
	UseStdout bool `yaml:"use_stdout" json:"use_stdout"`

	Prettify bool `yaml:"prettify" json:"prettify"`
}

type FileOutputConfig

type FileOutputConfig struct {
	// Path is the complete path to the log file,
	// either absolute or relative.
	Path string `yaml:"path" json:"path"`

	// FilePermissions defines the permissions to be applied to the log file,
	// e.g. 0660.
	// If zero, no permissions will be applied.
	FilePermissions uint32 `yaml:"file_permissions" json:"file_permissions"`

	FileOwner string `yaml:"file_owner" json:"file_owner"`

	// FilePermissions defines the permissions to be applied to the directory
	// containing the log file.
	// If zero, no permissions will be applied.
	DirPermissions uint32 `yaml:"dir_permissions" json:"dir_permissions"`

	DirOwner string `yaml:"dir_owner" json:"dir_owner"`

	// Rotate enables log file rotation. If false,
	// MaxSizeMb, MaxAgeDays, MaxBackups and Compress values
	// are ignored.
	Rotate bool `yaml:"rotate" json:"rotate"`

	// MaxSize is the maximum size in megabytes of the log file before it gets
	// rotated. It defaults to 100 megabytes.
	MaxSize int `yaml:"maxsize" json:"maxsize"`

	// MaxAge is the maximum number of days to retain old log files based on the
	// timestamp encoded in their filename.  Note that a day is defined as 24
	// hours and may not exactly correspond to calendar days due to daylight
	// savings, leap seconds, etc. The default is not to remove old log files
	// based on age.
	MaxAge int `yaml:"maxage" json:"maxage"`

	// MaxBackups is the maximum number of old log files to retain.  The default
	// is to retain all old log files (though MaxAge may still cause them to get
	// deleted.)
	MaxBackups int `yaml:"maxbackups" json:"maxbackups"`

	// Compress determines if the rotated log files should be compressed
	// using gzip. The default is not to perform compression.
	Compress bool `yaml:"compress" json:"compress"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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