Controlling Log Output from Command-Line Tooling¶
Every command-line program has a standard set of options that control how logs are reported.
These can be listed using
butler --help and are available to all command-line programs that use the Butler command-line infrastructure.
The logging options must be given before any subcommand is specified.
By default the
lsst log hierarchy is set to
INFO logging level and the python root logger is left at its default level of
Additional loggers (and their descendants) can be treated the same as the default
lsst logger by setting the
$DAF_BUTLER_DEFAULT_LOGGER environment variable to a colon-separated list of logger names.
The logging level can be changed by using the
--log-level command line option.
To change all the default loggers to
The help text will list all the supported level names.
To change the logging level of the root python logger use either
--log-level .=LEVEL (where
LEVEL is the required level from the supported list).
Since the default logger is always set to
INFO, in order to set all loggers to, say,
DEBUG then both the default and root logger must be set explicitly:
--log-level "=DEBUG" --log-level DEBUG.
This syntax demonstrates how to specify finer control of specific loggers.
For example to turn on debug logging solely in Butler datastores use
-log-level option can be given multiple times.
As an example of how the log options can be combined:
butler --log-level lsst.daf.butler=DEBUG --long-log --log-label MY_ID --log-file log.json
These options will:
INFOand the butler logger to
DEBUG, leaving all non-lsst loggers at
generate formatted log messages that will use the long format that includes time stamps with every log message containing the special text
create a log file containing a JSON representation of the log messages.
The JSON output always includes every piece of information from the log record; the
--long-log option has no effect on the content of the JSON file.