Erlang -- Error Logging

System Principles

User's Guide

Version 12.0

- User's Guide
- PDF
- Top

- Expand All
- Contract All

### Chapters

- System Principles
  - Top of chapter
  - Starting the System
  - Restarting and Stopping the System
  - Boot Scripts
  - Code Loading Strategy
  - File Types
- Error Logging
  - Top of chapter
  - Error Information From the Runtime System
  - Log events from OTP behaviours
- Creating and Upgrading a Target System
  - Top of chapter
  - Creating a Target System
  - Installing a Target System
  - Starting a Target System
  - System Configuration Parameters
  - Differences From the Install Script
  - Creating the Next Version
  - Upgrading the Target System
  - Listing of target_system.erl
- Upgrade when Erlang/OTP has Changed
  - Top of chapter
  - Introduction
  - Upgrade of Core Applications
  - Applications that Still do Not Allow Code Upgrade
- Versions
  - Top of chapter
  - OTP Version
  - Application Version
  - Version Scheme
  - Releases and Patches
  - OTP Versions Tree
  - OTP 17.0 Application Versions
- Support, Compatibility, Deprecations, and Removal
  - Top of chapter
  - Introduction
  - Supported Releases
  - Compatibility
  - Deprecation
  - Removal

# 2 Error Logging

### 2.1 Error Information From the Runtime System

Error information from the runtime system, that is, information about a process terminating because of an uncaught error exception, is by default written to terminal (tty):

    =ERROR REPORT==== 9-Dec-2003::13:25:02 ===
    Error in process <0.27.0> with exit value: {{badmatch,[1,2,3]},[{m,f,1},{shell,eval_loop,2}]}

The error information is handled by Logger, which is part of the Kernel application.

The exit reasons (such as badarg) used by the runtime system are described in Errors and Error Handling.

For information about Logger and its user interface, see the logger(3) manual page and the Logging section in the Kernel User's Guide. The system can be configured so that log events are written to file or to tty, or both. In addition, user-defined applications can send and format log events using Logger.

### 2.2 Log events from OTP behaviours

The standard behaviours (supervisor, gen_server, and so on) send progress and error information to Logger. Progress reports are by default not logged, but can be enabled by setting the primary log level to info, for example by using the Kernel configuration parameter logger_level. Supervisor reports, crash reports and other error and information reports are by default logged through the log handler which is set up when the Kernel application is started.

Prior to Erlang/OTP 21.0, supervisor, crash, and progress reports were only logged when the SASL application was running. This behaviour can, for backwards compatibility, be enabled by setting the Kernel configuration parameter logger_sasl_compatible to true. For more information, see SASL Error Logging in the SASL User's Guide.

    % erl -kernel logger_level info
    Erlang/OTP 21 [erts-10.0] [source-13c50db] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]

    =PROGRESS REPORT==== 8-Jun-2018::16:54:19.916404 ===
        application: kernel
        started_at: nonode@nohost
    =PROGRESS REPORT==== 8-Jun-2018::16:54:19.922908 ===
        application: stdlib
        started_at: nonode@nohost
    =PROGRESS REPORT==== 8-Jun-2018::16:54:19.925755 ===
        supervisor: {local,kernel_safe_sup}
        started: [{pid,<0.74.0>},
                  {id,disk_log_sup},
                  {mfargs,{disk_log_sup,start_link,[]}},
                  {restart_type,permanent},
                  {shutdown,1000},
                  {child_type,supervisor}]
    =PROGRESS REPORT==== 8-Jun-2018::16:54:19.926056 ===
        supervisor: {local,kernel_safe_sup}
        started: [{pid,<0.75.0>},
                  {id,disk_log_server},
                  {mfargs,{disk_log_server,start_link,[]}},
                  {restart_type,permanent},
                  {shutdown,2000},
                  {child_type,worker}]
    Eshell V10.0  (abort with ^G)
    1>