Logging2 is a library which extends the standard Julia Logging library with additional functionality. The intent of this library is to consolidate some of the more useful "core" logging functionality from the wider Julia ecosystem, and serve as a staging area to improve the logging standard library itself.
Redirect stdout or stderr to the logging system
redirect_stderr to redirect all strings written to
stderr to any
AbstractLogger during the execution of a given
logger = current_logger() # or construct one explicitly redirect_stdout(logger) do println("Hi") run(`ls`) end
stder are global streams, so this logging choice
is made globally for the whole program. Therefore, you should probably only do
this at the top level of your application (certainly never in any library
code which you expect to run concurrently).
The Wider Julia Logging Ecosystem
As of mid-2020, here is a list of libraries from the Julia ecosystem which relate to the standard logging infrastructure.
Base exports the four logging frontend macros
@error and the stdlib
Logging library provides a
default logger backend
ConsoleLogger for some basic filtering and pretty
printing of log records in the terminal. It combines convenient but
non-composable features into a single logger type.
ProgressLogging.jlprovides some convenient frontend macros including
@progresswhich makes it easy to emit log records tracking the progress of looping constructs.
Log Event routing and transformation
LoggingExtras.jlprovides generic log transformation, filtering and routing functionality. You can use this to mutate messages as they go through the chain, duplicate a stream of log records into multiple streams, discard messages based on a predicate, etc.
TerminalLoggers.jlis a library for advanced terminal-based pretty printing of log records, including fancy progress bars and markdown formatting.
TensorBoardLogger.jlcan log structured numeric data to TensorBoard as a backend.
LogRoller.jlhas a backend for rotating log files once they hit a size limit.
- backend to direct logs to syslog.
LoggingExtras.jlprovides a simple
LogCompose.jlprovides declarative logger configuration and an associated