trusty (3) error_logger.3erl.gz

Provided by: erlang-manpages_16.b.3-dfsg-1ubuntu2.2_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. Error, warning 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 tty. Note 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 only has a primitive event handler,  which  buffers  and  prints  the  raw  event
       messages.  During  system startup, the application Kernel replaces this with a standard event handler, by
       default one which writes nicely formatted output to tty. Kernel can also be configured so that events are
       logged to 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 tty. See sasl(7).

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

       Warning  events was introduced in Erlang/OTP R9C. To retain backwards compatibility, these are by default
       tagged as errors, thus showing up as error reports in the logs. By using the command line flag  +W  <w  |
       i>,  they  can  instead  be  tagged  as  warnings or info. Tagging them as warnings may require rewriting
       existing user defined event handlers.

DATA TYPES

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

EXPORTS

       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. The event is handled by the standard event handler.

              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.

       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.

              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.

       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 (default), warnings or info, depending on the value of the
              command line flag +W.

              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().
              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
              3>
              User switch command
               --> q
              os$ erl +W w
              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

       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.  The event is handled by the standard event handler. It is tagged
              either 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_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 either 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 either as an error, warning or info, depending on the value of warning_map/0.

       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. The event is handled by the standard event handler.

              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.

       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.

              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.

       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 described below.

       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).

       tty(Flag) -> ok

              Types:

                 Flag = boolean()

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

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

       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 in combination with calling  tty(false),  in  order  to  have  a
              silent  system,  where all standard events are logged to a file only. There can only be one active
              log file at a time.

              Request is one of:

                {open, Filename}:
                  Opens the 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 could not be opened.

                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.

EVENTS

       All  event  handlers  added  to  the  error logger must handle the following events. Gleader is the group
       leader pid of the process which sent the event, and Pid is the process which 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, provided that warnings are set to be tagged as warnings.

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

         {warning_report, Gleader, {Pid, Type, Report}}:
           Generated when warning_report/2 is called, provided that 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.

       Note that also a number of system internal events may  be  received,  a  catch-all  clause  last  in  the
       definition  of  the  event  handler callback function Module:handle_event/2 is necessary. This also holds
       true for Module:handle_info/2, as there are a number of system internal messages the event  handler  must
       take care of as well.

SEE ALSO

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