bionic (3) error_logger.3erl.gz

Provided by: erlang-manpages_20.2.2+dfsg-1ubuntu2_all bug

NAME

       error_logger - Erlang error logger.

DESCRIPTION

       The  Erlang  error logger is an event manager (see OTP Design Principles and gen_event(3erl)), registered
       as error_logger. Errors, warnings, and info events are sent to the error logger from the  Erlang  runtime
       system  and  the  different  Erlang/OTP applications. The events are, by default, logged to the terminal.
       Notice that an event from a process P is logged at the node of the group leader of P. This means that log
       output  is  directed to the node from which a process was created, which not necessarily is the same node
       as where it is executing.

       Initially, error_logger has only a primitive event handler,  which  buffers  and  prints  the  raw  event
       messages.  During  system startup, the Kernel application replaces this with a standard event handler, by
       default one that writes nicely formatted output to the terminal. Kernel can also be  configured  so  that
       events are logged to a file instead, or not logged at all, see kernel(7).

       Also  the  SASL  application, if started, adds its own event handler, which by default writes supervisor,
       crash, and progress reports to the terminal. See sasl(7).

       It is recommended that user-defined applications report errors through the error logger  to  get  uniform
       reports.   User-defined   event  handlers  can  be  added  to  handle  application-specific  events,  see
       add_report_handler/1,2. Also, a useful event handler is provided in  STDLIB  for  multi-file  logging  of
       events, see log_mf_h(3erl).

       Warning  events  were introduced in Erlang/OTP R9C and are enabled by default as from Erlang/OTP 18.0. To
       retain backwards compatibility with existing user-defined event  handlers,  the  warning  events  can  be
       tagged  as errors or info using command-line flag +W <e | i | w>, thus showing up as ERROR REPORT or INFO
       REPORT in the logs.

DATA TYPES

       report() =
           [{Tag :: term(), Data :: term()} | term()] | string() | term()

EXPORTS

       add_report_handler(Handler) -> any()

       add_report_handler(Handler, Args) -> Result

              Types:

                 Handler = module()
                 Args = gen_event:handler_args()
                 Result = gen_event:add_handler_ret()

              Adds a new event handler to the error logger. The event handler must be implemented as a gen_event
              callback module, see gen_event(3erl).

              Handler is typically the name of the callback module and Args is an optional term (defaults to [])
              passed to the  initialization  callback  function  Handler:init/1.  The  function  returns  ok  if
              successful.

              The event handler must be able to handle the events in this module, see section Events.

       delete_report_handler(Handler) -> Result

              Types:

                 Handler = module()
                 Result = gen_event:del_handler_ret()

              Deletes  an  event handler from the error logger by calling gen_event:delete_handler(error_logger,
              Handler, []), see gen_event(3erl).

       error_msg(Format) -> ok

       error_msg(Format, Data) -> ok

       format(Format, Data) -> ok

              Types:

                 Format = string()
                 Data = list()

              Sends a standard error event to the error logger. The Format and Data arguments are  the  same  as
              the arguments of io:format/2 in STDLIB. The event is handled by the standard event handler.

              Example:

              1> error_logger:error_msg("An error occurred in ~p~n", [a_module]).

              =ERROR REPORT==== 11-Aug-2005::14:03:19 ===
              An error occurred in a_module
              ok

          Warning:
              If  called  with  bad  arguments,  this  function can crash the standard event handler, meaning no
              further events are logged. When in doubt, use error_report/1 instead.

          Warning:
              If the Unicode translation modifier (t) is used in the format  string,  all  error  handlers  must
              ensure that the formatted output is correctly encoded for the I/O device.

       error_report(Report) -> ok

              Types:

                 Report = report()

              Sends  a  standard  error  report  event to the error logger. The event is handled by the standard
              event handler.

              Example:

              2> error_logger:error_report([{tag1,data1},a_term,{tag2,data}]).

              =ERROR REPORT==== 11-Aug-2005::13:45:41 ===
                  tag1: data1
                  a_term
                  tag2: data
              ok
              3> error_logger:error_report("Serious error in my module").

              =ERROR REPORT==== 11-Aug-2005::13:45:49 ===
              Serious error in my module
              ok

       error_report(Type, Report) -> ok

              Types:

                 Type = term()
                 Report = report()

              Sends a user-defined error report event to the error logger. An event handler to handle the  event
              is supposed to have been added. The event is ignored by the standard event handler.

              It is recommended that Report follows the same structure as for error_report/1.

       get_format_depth() -> unlimited | integer() >= 1

              Returns  max(10,  Depth),  where  Depth  is  the value of  error_logger_format_depth in the Kernel
              application, if Depth is an integer. Otherwise, unlimited is returned.

       info_msg(Format) -> ok

       info_msg(Format, Data) -> ok

              Types:

                 Format = string()
                 Data = list()

              Sends a standard information event to the error logger. The Format and Data arguments are the same
              as the arguments of io:format/2 in STDLIB. The event is handled by the standard event handler.

              Example:

              1> error_logger:info_msg("Something happened in ~p~n", [a_module]).

              =INFO REPORT==== 11-Aug-2005::14:06:15 ===
              Something happened in a_module
              ok

          Warning:
              If  called  with  bad  arguments,  this  function can crash the standard event handler, meaning no
              further events are logged. When in doubt, use info_report/1 instead.

          Warning:
              If the Unicode translation modifier (t) is used in the format  string,  all  error  handlers  must
              ensure that the formatted output is correctly encoded for the I/O device.

       info_report(Report) -> ok

              Types:

                 Report = report()

              Sends  a  standard  information  report  event  to  the  error logger. The event is handled by the
              standard event handler.

              Example:

              2> error_logger:info_report([{tag1,data1},a_term,{tag2,data}]).

              =INFO REPORT==== 11-Aug-2005::13:55:09 ===
                  tag1: data1
                  a_term
                  tag2: data
              ok
              3> error_logger:info_report("Something strange happened").

              =INFO REPORT==== 11-Aug-2005::13:55:36 ===
              Something strange happened
              ok

       info_report(Type, Report) -> ok

              Types:

                 Type = any()
                 Report = report()

              Sends a user-defined information report event to the error logger. An event handler to handle  the
              event is supposed to have been added. The event is ignored by the standard event handler.

              It is recommended that Report follows the same structure as for info_report/1.

       logfile(Request :: {open, Filename}) -> ok | {error, OpenReason}

       logfile(Request :: close) -> ok | {error, CloseReason}

       logfile(Request :: filename) -> Filename | {error, FilenameReason}

              Types:

                 Filename = file:name()
                 OpenReason = allready_have_logfile | open_error()
                 CloseReason = module_not_found
                 FilenameReason = no_log_file
                 open_error() = file:posix() | badarg | system_limit

              Enables or disables printout of standard events to a file.

              This  is  done  by adding or deleting the standard event handler for output to file. Thus, calling
              this function overrides the value of the Kernel error_logger configuration parameter.

              Enabling file logging can be used together with calling tty(false), to have a silent system  where
              all standard events are logged to a file only. Only one log file can be active at a time.

              Request is one of the following:

                {open, Filename}:
                  Opens  log  file  Filename.  Returns  ok  if  successful, or {error, allready_have_logfile} if
                  logging to file is already enabled, or an error tuple if another error occurred (for  example,
                  if Filename cannot be opened). The file is opened with encoding UTF-8.

                close:
                  Closes the current log file. Returns ok, or {error, module_not_found}.

                filename:
                  Returns  the  name of the log file Filename, or {error, no_log_file} if logging to file is not
                  enabled.

       tty(Flag) -> ok

              Types:

                 Flag = boolean()

              Enables (Flag == true) or disables (Flag == false) printout of standard events to the terminal.

              This is done by adding or deleting the standard event handler for output to  the  terminal.  Thus,
              calling this function overrides the value of the Kernel error_logger configuration parameter.

       warning_map() -> Tag

              Types:

                 Tag = error | warning | info

              Returns   the   current   mapping  for  warning  events.  Events  sent  using  warning_msg/1,2  or
              warning_report/1,2 are tagged as errors, warnings (default), or info, depending on  the  value  of
              command-line flag +W.

              Example:

              os$ erl
              Erlang (BEAM) emulator version 5.4.8 [hipe] [threads:0] [kernel-poll]

              Eshell V5.4.8  (abort with ^G)
              1> error_logger:warning_map().
              warning
              2> error_logger:warning_msg("Warnings tagged as: ~p~n", [warning]).

              =WARNING REPORT==== 11-Aug-2005::15:31:55 ===
              Warnings tagged as: warning
              ok
              3>
              User switch command
               --> q
              os$ erl +W e
              Erlang (BEAM) emulator version 5.4.8 [hipe] [threads:0] [kernel-poll]

              Eshell V5.4.8  (abort with ^G)
              1> error_logger:warning_map().
              error
              2> error_logger:warning_msg("Warnings tagged as: ~p~n", [error]).

              =ERROR REPORT==== 11-Aug-2005::15:31:23 ===
              Warnings tagged as: error
              ok

       warning_msg(Format) -> ok

       warning_msg(Format, Data) -> ok

              Types:

                 Format = string()
                 Data = list()

              Sends  a standard warning event to the error logger. The Format and Data arguments are the same as
              the arguments of io:format/2 in STDLIB. The event is handled by the standard event handler. It  is
              tagged as an error, warning, or info, see warning_map/0.

          Warning:
              If  called  with  bad  arguments,  this  function can crash the standard event handler, meaning no
              further events are logged. When in doubt, use warning_report/1 instead.

          Warning:
              If the Unicode translation modifier (t) is used in the format  string,  all  error  handlers  must
              ensure that the formatted output is correctly encoded for the I/O device.

       warning_report(Report) -> ok

              Types:

                 Report = report()

              Sends  a  standard  warning report event to the error logger. The event is handled by the standard
              event handler. It is tagged as an error, warning, or info, see warning_map/0.

       warning_report(Type, Report) -> ok

              Types:

                 Type = any()
                 Report = report()

              Sends a user-defined warning report event to the error logger. An  event  handler  to  handle  the
              event  is  supposed  to have been added. The event is ignored by the standard event handler. It is
              tagged as an error, warning, or info, depending on the value of warning_map/0.

EVENTS

       All event handlers added to the error logger must handle the  following  events.  Gleader  is  the  group
       leader pid of the process that sent the event, and Pid is the process that sent the event.

         {error, Gleader, {Pid, Format, Data}}:
           Generated when error_msg/1,2 or format is called.

         {error_report, Gleader, {Pid, std_error, Report}}:
           Generated when error_report/1 is called.

         {error_report, Gleader, {Pid, Type, Report}}:
           Generated when error_report/2 is called.

         {warning_msg, Gleader, {Pid, Format, Data}}:
           Generated when warning_msg/1,2 is called if warnings are set to be tagged as warnings.

         {warning_report, Gleader, {Pid, std_warning, Report}}:
           Generated when warning_report/1 is called if warnings are set to be tagged as warnings.

         {warning_report, Gleader, {Pid, Type, Report}}:
           Generated when warning_report/2 is called if warnings are set to be tagged as warnings.

         {info_msg, Gleader, {Pid, Format, Data}}:
           Generated when info_msg/1,2 is called.

         {info_report, Gleader, {Pid, std_info, Report}}:
           Generated when info_report/1 is called.

         {info_report, Gleader, {Pid, Type, Report}}:
           Generated when info_report/2 is called.

       Notice  that  some  system-internal events can also be received. Therefore a catch-all clause last in the
       definition of the event handler callback function Module:handle_event/2 is necessary. This  also  applies
       for Module:handle_info/2, as the event handler must also take care of some system-internal messages.

SEE ALSO

       gen_event(3erl), log_mf_h(3erl) kernel(7) sasl(7)