Logging package overview

This section contains an overview of the many packages that are related to logging in Julia. Most of the packages integrate with the standard logging frontend macros @debug, @info, @warn, and @error from Base and with the abstractions provided by the Logging.jl standard library.

Note

If some logging-related package is missing from the list below don't hesitate to contribute by adding it!

Logging.jl

The Logging stdlib provides much of the logging infrastructure which most of the other logging packages build upon. Among other things, Logging provides global_logger and with_logger for setting the global/local logger, the AbstractLogger interface, and three loggers:

Functionality from Logging is used in most of the tutorials and how-to's in this documentation.

See the Logging API reference for details.

LoggingExtras.jl

The LoggingExtras package provides many essential extensions to the Logging stdlib. For example loggers for message filtering: MinLevelLogger, EarlyFilteredLogger, and ActiveFilteredLogger; a TransformerLogger for arbitrary message transformations; a TeeLogger for message routing; and three different logger sinks: FileLogger for logging to files on disk, FormatLogger for customizing the logging output formatting, and DatetimeRotatingFileLogger for logging to files on disk that rotates based on the date. Functionality from LoggingExtras is used in most how-to guides so refer to those for examples.

See the LoggingExtras API reference for details.

LoggingFormats.jl

The LoggingFormats package provide some predefined logging formats to be used with FormatLogger, DatetimeRotatingFileLogger from the LoggingExtras.jl package:

See the LoggingFormats API reference for details.

TerminalLoggers.jl

The TerminalLoggers package provides the TerminalLogger which is a more advanced terminal-based pretty printing of log records. In particular it supports Markdown formatting of log messages and progress bars (built on top of the ProgressLogging package).

See the TerminalLoggers API reference for details.

ProgressLogging.jl

The ProgressLogging package provides some convenient frontend macros including @progress which makes it easy to emit log records tracking the progress of looping constructs.

See the ProgressLogging API reference for details.

LogRoller.jl

The LogRoller package provide functionality for rotating log files when they hit a certain size limit. In particular the IO RollingFileWriter (which can be combined with other loggers) and also the RollingLogger.

See the LogRoller API reference for details.

SyslogLogging.jl

The SyslogLogging package provides the SyslogLogger which writes messages to syslog.

See the SyslogLogging API reference for details.

Logging2.jl

The Logging2 package provides utilities for redirecting stdout and stderr output to the logging system.

See the Logging2 API reference for details.

TensorBoardLogger.jl

The TensorBoardLogger package can log structured numeric data to TensorBoard as a backend.

LokiLogger.jl

The LokiLogger package provides the LokiLogger.Logger logger which sends the log messages over HTTP to a Grafana Loki server.

See the LokiLogger API reference for details.

LogCompose.jl

The LogCompose package provides declarative logger configuration and an associated .toml file format.

See the LogCompose API reference for details.

MiniLoggers.jl

The MiniLoggers package provides Julia logger with minimal setup and simple yet powerful format of logging strings. It allows to build custom and compact logging, which supports coloring, output to external files, timestamps and many more.

See the MiniLoggers API reference for details.