Kernel

Reference Manual

Version 6.0

Table of Contents

logger_std_h

Module

logger_std_h

Module Summary

Default handler for the Logger application.

Description

This is the default handler for the Logger application. Multiple instances of this handler can be added to logger, and each instance will print logs to standard_io, standard_error or to file. The default instance that starts with kernel is named logger_std_h - which is the name to be used for reconfiguration.

The handler has an overload protection mechanism that will keep the handler process and the kernel application alive during a high load of log requests. How this feature works, and how to modify the configuration, is described in the User's Guide.

To add a new instance of the standard handler, use logger:add_handler/3. The handler configuration argument is a map which may contain general configuration parameters, as documented in the User's Guide, as well as handler specific parameters. The specific parameters are stored in a sub map with the key logger_std_h. The following keys and values may be specified:

type

This will have the value standard_io, standard_error, {file,LogFileName}, or {file,LogFileName,LogFileOpts}, where standard_io is the default value for type. It's recommended to not specify LogFileOpts if not absolutely necessary. The default options used by the handler to open a file for logging are: raw, append and delayed_write. The standard handler does not have support for circular logging. Use the logger_disk_log_h handler for this.

filesync_repeat_interval

This value (in milliseconds) specifies how often the handler will do a file sync operation in order to make sure that buffered data gets written to disk. The handler will repeatedly attempt this operation, but only perform it if something has actually been logged since the last sync. The default value is 5000 milliseconds. If no_repeat is set as value, the repeated file sync operation is disabled, and it will be the operating system settings that determine how quickly or slowly data gets written to disk. The user can also call the filesync/1 function to perform a file sync.

There are a number of other configuration parameters available, that are to be used for customizing the overload protection behaviour. The same parameters are used both in the standard handler and the disk_log handler, and are documented in the User's Guide.

Note that when changing the configuration of the handler in runtime, by calling logger:set_handler_config/2, or logger:set_handler_config/3, the type parameter may not be modified.

Example of adding a standard handler:

logger:add_handler(my_standard_h, logger_std_h,
                   #{level => info,
                     filter_default => log,
                     logger_std_h =>
                              #{type => {file,"./system_info.log"},
                                filesync_repeat_interval => 1000}}).

In order to configure the default handler (that starts initially with the kernel application) to log to file instead of standard_io, use the kernel configuration parameter logger_dest with value {file,FileName}. Example:

erl -kernel logger_dest '{file,"./erl.log"}'

An example of how to replace the standard handler with a disk_log handler at startup can be found in the manual of logger_disk_log_h.

Exports

filesync(Name) -> ok | {error, Reason}

Types

Name = atom()
Reason = handler_busy | {badarg, term()}

Write buffered data to disk.