Notification logs stop being produced after upgrading to Mattermost v11

Applies to: Mattermost Server v11.0 and later, upgraded from v10.12 or earlier, where the previous configuration relied on a separate notification log configured through NotificationLogSettings.

Symptoms: Notification log output that was produced before the upgrade is no longer emitted to the console or to the log destination it previously used.

 


🛑 Problem

The separate notification log was deprecated in Mattermost Server v11.0. From v11, notification logging is consolidated into the standard console log and mattermost.log, and the dedicated notification log settings block no longer drives a separate output.

Any log pipeline that consumed a distinct notification stream, such as a CloudWatch log group or a Splunk index fed from a separate console target, will therefore go quiet after the upgrade even though the underlying notification events are still being generated.

To continue emitting notification events as their own stream, define an advanced logging target that subscribes to the notification log levels. Those levels are addressed by numeric ID:

  • 300 NotificationError
  • 301 NotificationWarn
  • 302 NotificationInfo
  • 303 NotificationDebug
  • 304 NotificationTrace

One behavioural difference matters when comparing before and after: some notification events that were logged at INFO in earlier releases are logged at TRACE in v11, and v11 adds more detailed events. Including NotificationTrace gives the closest coverage to the pre-upgrade output, but the result is not an exact one-to-one match.

Symptoms

"NotificationLogSettings": {
        "EnableConsole": true,
        "ConsoleLevel": "DEBUG",
        "ConsoleJson": true
    }
  • The configuration above produced notification output before the upgrade and produces none after it.
  • General server logging continues to work normally.
  • Downstream log collectors receive no notification events.

âś… Solution

Define a notification logging target under LogSettings.AdvancedLoggingJSON. This can be applied from the System Console, from mmctl, or in configuration, and all three write the same setting.

Option 1: System Console

Go to System Console > Environment > Logging > Advanced Logging and replace the current {} value with:

{"notification_console":{"type":"console","format":"json","levels":[{"id":300,"name":"NotificationError"},{"id":301,"name":"NotificationWarn"},{"id":302,"name":"NotificationInfo"},{"id":303,"name":"NotificationDebug"},{"id":304,"name":"NotificationTrace"}],"options":{"out":"stdout"},"maxqueuesize":1000}}

Enter only that JSON. Do not wrap it in LogSettings or AdvancedLoggingJSON, since the field is already that setting. Select Save.

Option 2: mmctl

mmctl config set LogSettings.AdvancedLoggingJSON '{"notification_console":{"type":"console","format":"json","levels":[{"id":300,"name":"NotificationError"},{"id":301,"name":"NotificationWarn"},{"id":302,"name":"NotificationInfo"},{"id":303,"name":"NotificationDebug"},{"id":304,"name":"NotificationTrace"}],"options":{"out":"stdout"},"maxqueuesize":1000}}'

Verify what was stored:

mmctl config get LogSettings.AdvancedLoggingJSON

⚠️ Important: Setting this value replaces the entire Advanced Logging configuration. If other advanced logging targets are already defined, include them in the same JSON object or they will be removed.

Choosing the console level

Leave LogSettings.ConsoleLevel at its existing value. Notification output is driven by the levels declared in the advanced logging target, so raising the general console level to DEBUG is unnecessary and produces debug output from the whole server.

 

Additional Resources

Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Article is closed for comments.