See also: How to manage logs

A log is a computer-generated record about entities, activities, usage patterns, etc., within a system. In Juju, logs are produced by jujud and keep track of machine and unit agents, models, controllers, etc.


Log files

In Juju, logs are organised into a number of files. These files are located on every machine that Juju creates, including the controller. Specifically, they can be found under /var/log/juju, and may include:

Agent log files

Agent log files (e.g., /var/log/juju/unit-controller-0.log ) contain the logs for the machine and unit agents.

Model log files

Model log files (e.g., /var/log/juju/models/admin-test-3850c8.log) contain the logs for all the workers on a model.

The audit log file

The audit log file (/var/log/juju/audit.log) logs all the client commands and all the API calls and errors responses associated with a controller, classified as one of the following:

  • Conversation: A collection of API methods associated with a single top-level CLI command.
  • Request: A single API method.
  • ResponseErrors: Errors resulting from an API method

The audit log file can be found only on controller machines.

The logsink log file

The logsink file (logsink.log) contains all the agent logs shipped to the controller, in aggregated form. These logs will end up in Juju’s internal database, MongoDB.

In a controller high availability scenario, logsink.log is not guaranteed to contain all messages since agents have a choice of several controllers to send their logs to. The debug-log command should be used for accessing consolidated data across all controllers.

The machine-lock log file

The machine-lock log file (machine-lock.log) contains logs for the file lock that synchronises hook execution on Juju machines. (A machine will only ever run one hook at a time.)

Log verbosity levels

Juju logs can be filtered (e.g., in the output of juju debug-log) by their level of verbosity.

From most verbose to least verbose, these levels are:

  • INFO

Selecting a certain log level will output the logs with that level as well as the logs with a less verbose level. For example, selecting WARNING will show both WARNING- and ERROR-level logs.

Log labels

Juju logs can be filtered (e.g., in the output of juju debug-log) by their topic, or ‘label’.

The currently available labels are:

cmr cross model relations
cmr-auth cross-model relations authorization
charmhub dealing with the charmhub client and callers
http HTTP requests
metrics juju metrics; this should be used as a fallback for when prometheus isn’t available