Skip to content

Logs Configuration

This page introduces how to configure logging behavior for EMQX via the configuration file. You can also configure EMQX logs with Dashboard. To configure with EMQX Dashboard, you can click Management -> Logging on the left navigation menu to configure. For more detailed descriptions of logs and Dashboard configurations, see Logs and Observability - Logs.

TIP

This page also introduces the Dashboard UI fields corresponding to the configuration items. If you configured these items with the Dashboard, the new settings can only temporarily override the same configuration items in emqx.conf until the next restart.

EMQX provides support for two primary log handlers: Console Log and File Log, with an additional Audit Log handler specifically designed to always direct logs to files.

The system's default log-handling behavior can be configured via the environment variable EMQX_DEFAULT_LOG_HANDLER, which accepts the following settings:

  • file: Directs log output to files.
  • console: Channels log output to the console.

Environment variable EMQX_DEFAULT_LOG_HANDLER defaults console, but explicitly set to file when EMQX is initiated via systemd's emqx.service file.

Output Logs as a File

EMQX's log output directory is determined by the environment variable EMQX_LOG_DIR which is set to /var/log/emqx if installed via RPM or DEB packages. Otherwise, the log directory is log in the EMQX installation directory.

For EMQX docker container, the installation directory is /opt/emqx, hence the log directory is /opt/emqx/log.

To output logs as a file, you may either configure the log handler in the Dashboard or modify the emqx.conf file directly as below:

bash
log {
  file {
    enable = true
    formatter = text
    level = warning
    path = "/var/log/emqx/emqx.log"
    rotation_count = 10
    rotation_size = 50MB
    time_offset = system
    timestamp_format = auto
  }

Where,

Configuration ItemDashboard UIDescriptionDefault ValueOptional Values
formatterLog FormatterThis sets the log format.texttext is for free text.
json is for structured logging.
levelLog LevelThis sets the log level of the current log handler, that is, the minimum log level you want to record.warningdebug, info, notice, warning, error, critical, alert, emergency
pathLog File NameThis sets the path and name of the log file.
By default, EMQX writes the log file to the emqx.log file in the log directory of the EMQX installation directory.
emqx.log--
rotation_countMax Log Files NumberThis sets the max number of log files that can be saved.101 - 2,048
rotation_sizeRotation SizeThis sets the maximum size of a single log file before it is rotated. The old log file will be renamed and moved to an archive directory once it reached the specified value unless it is set to infinity, indicating the log file will not be rotated.50MB1 - infinity
time_offsetTime OffsetThe time offset relative to UTC in the log.system--
timestamp_formatterTimestamp FormatThe format of the timestamp in the log.autoauto: Automatically determines the timestamp format based on the log formatter being used. Utilizes rfc3339 format for text formatters, and epoch format for JSON formatters.
epoch: Microseconds precision Unix epoch format.
rfc3339: RFC3339 compliant format for date-time strings.

Output logs with Console

When EMQX is started in a docker container, the default log handler is console. You can configure the log level and log format with the following configuration items.

bash
log {
  console {
    formatter = json
    level = warning
    time_offset = system
    timestamp_format = auto
  }
}

Where,

Configuration ItemDashboard UIDescriptionDefault ValueOptional Values
formatterLog FormatterThis sets the log format.texttext for free text.
json for structured logging.
levelLog LevelThis sets the log level of the current log handler, that is, the minimum log level you want to record.warningdebug, info, notice, warning, error, critical, alert, emergency
time_offsetTime OffsetThe time offset relative to UTC in the log.system--
timestamp_formatterTimestamp FormatThe format of the timestamp in the log.autoauto: Automatically determines the timestamp format based on the log formatter being used. Utilizes rfc3339 format for text formatters, and epoch format for JSON formatters.
epoch: Microseconds precision Unix epoch format.
rfc3339: RFC3339 compliant format for date-time strings.

TIP

EMQX offers more configuration items to serve customized needs better. For details, see the EMQX Open Source Configuration Manual and EMQX Enterprise Configuration Manual for Enterprise.