Command 'juju debug-log'

The information in this doc is based on Juju version 3.5.6, and may not accurately reflect other versions of Juju.

See also: status, ssh

Summary

Displays log messages for a model.

Options

Flag Default Usage
-B, --no-browser-login false Do not use web browser for authentication
--color false Force use of ANSI color codes
--date false Show dates as well as times
--exclude-label Do not show log messages for these logging labels
--exclude-module Do not show log messages for these logging modules
-i, --include Only show log messages for these entities
--include-label Only show log messages for these logging labels
--include-module Only show log messages for these logging modules
-l, --level Log level to show, one of [TRACE, DEBUG, INFO, WARNING, ERROR]
--limit 0x40001ef068 Show this many of the most recent logs and then exit
--location false Show filename and line numbers
-m, --model Model to operate in. Accepts [<controller name>:]<model name>|<model UUID>
--ms false Show times to millisecond precision
-n, --lines 0x40001ef070 Show this many of the most recent lines and continue to append new ones
--no-tail false Show existing log messages and then exit
--replay false Show the entire log and continue to append new ones
--retry false Retry connection on failure
--retry-delay 1s Retry delay between connection failure retries
--tail false Show existing log messages and continue to append new ones
--utc false Show times in UTC
-x, --exclude Do not show log messages for these entities

Examples

Exclude all machine 0 messages; show a maximum of 100 lines; and continue to append filtered messages:

juju debug-log --exclude machine-0 --lines 100

Include only messages from the mysql/0 unit; show a maximum of 50 lines; and then exit:

juju debug-log --include mysql/0 --limit 50

Show all messages from the apache/2 unit or machine 1 and then exit:

juju debug-log --replay --include apache/2 --include machine-1 --no-tail

Show all juju.worker.uniter logging module messages that are also unit wordpress/0 messages, and then show any new log messages which match the filter and append:

juju debug-log --replay
    --include-module juju.worker.uniter \
    --include wordpress/0

Show all messages from the juju.worker.uniter module, except those sent from machine-3 or machine-4, and then stop:

juju debug-log --replay --no-tail
    --include-module juju.worker.uniter \
    --exclude machine-3 \
    --exclude machine-4

To see all WARNING and ERROR messages and then continue showing any new WARNING and ERROR messages as they are logged:

juju debug-log --replay --level WARNING

Details

This command provides access to all logged Juju activity on a per-model basis. By default, the logs for the currently select model are shown.

Each log line is emitted in this format:

<entity> <timestamp> <log-level> <module>:<line-no> <message>

The “entity” is the source of the message: a machine or unit. The names for machines and units can be seen in the output of juju status.

The ‘–include’ and ‘–exclude’ options filter by entity. The entity can be a machine, unit, or application for vm models, but can be application only for k8s models. These filters support wildcards * if filtering on the entity full name (prefixed by <entity type>-)

The ‘–include-module’ and ‘–exclude-module’ options filter by (dotted) logging module name. The module name can be truncated such that all loggers with the prefix will match.

The ‘–include-label’ and ‘–exclude-label’ options filter by logging label.

The filtering options combine as follows:

  • All --include options are logically ORed together.
  • All --exclude options are logically ORed together.
  • All --include-module options are logically ORed together.
  • All --exclude-module options are logically ORed together.
  • All --include-label options are logically ORed together.
  • All --exclude-label options are logically ORed together.
  • The combined --include, --exclude, --include-module, --exclude-module, –include-label and --exclude-label selections are logically ANDed to form the complete filter.

The ‘–tail’ option waits for and continuously prints new log lines after displaying the most recent log lines.

The ‘–no-tail’ option displays the most recent log lines and then exits immediately.

The ‘–lines’ and ‘–limit’ options control the number of log lines displayed:

  • –lines option prints the specified number of the most recent lines and then waits for new lines. This implies --tail.
  • –limit option prints up to the specified number of the most recent lines and exits. This implies --no-tail.
  • setting --lines or --limit to 0 will print the maximum number of the most recent lines available.

The ‘–replay’ option displays log lines starting from the beginning.

Behavior when combining --replay with other options:

  • –replay and --limit prints the specified number of lines from the beginning of the log.
  • –replay and --lines is invalid as it causes confusion by skipping logs between the replayed lines and the current tailing point.

Given the above, the following flag combinations are incompatible and cannot be specified together:

  • –tail and --no-tail
  • –tail and --limit
  • –no-tail and --lines (-n)
  • –limit and --lines (-n)
  • –replay and --lines (-n)