From 6211cead7be6f0871cfcccccdfc00dbeb466bcf2 Mon Sep 17 00:00:00 2001 From: Siri Hansen Date: Fri, 14 Dec 2018 13:05:32 +0100 Subject: [logger] Add API function for configuring logger proxy --- lib/kernel/doc/src/logger_chapter.xml | 55 +++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) (limited to 'lib/kernel/doc/src/logger_chapter.xml') diff --git a/lib/kernel/doc/src/logger_chapter.xml b/lib/kernel/doc/src/logger_chapter.xml index 458e61cef5..5ed7397135 100644 --- a/lib/kernel/doc/src/logger_chapter.xml +++ b/lib/kernel/doc/src/logger_chapter.xml @@ -693,8 +693,10 @@ logger:debug(#{got => connection_request, id => Id, state => State}, with logger_sasl_compatible.

With this parameter, you can modify or disable the default - handler, add custom handlers and primary logger filters, and - set log levels per module.

+ handler, add custom handlers and primary logger filters, set + log levels per module, and modify + the proxy + configuration.

Config is any (zero or more) of the following:

{handler, default, undefined} @@ -746,6 +748,14 @@ logger:debug(#{got => connection_request, id => Id, state => State},

for each Module.

Multiple entries of this type are allowed.

+ {proxy, ProxyConfig} + +

Sets the proxy configuration, equivalent to calling

+

+		logger:set_proxy_config(ProxyConfig)
+	    
+

Only one entry of this type is allowed.

+

See section Configuration @@ -1333,10 +1343,51 @@ logger:add_handler(my_disk_log_h, logger_disk_log_h, +

+ + Logger Proxy +

The Logger proxy is an Erlang process which is part of the + Kernel application's supervision tree. During startup, the proxy + process registers itself as the system_logger, meaning + that log events produced by the emulator are sent to this + process.

+

When a log event is issued on a process which has its group + leader on a remote node, Logger automatically forwards the log + event to the group leader's node. To achieve this, it first + sends the log event as an Erlang message from the original + client process to the proxy on the local node, and the proxy in + turn forwards the event to the proxy on the remote node.

+

When receiving a log event, either from the emulator or from a + remote node, the proxy calls the Logger API to log the event.

+

The proxy process is overload protected in the same way as + described in + section Protecting the + Handler from Overload, but with the following default + values:

+ + #{sync_mode_qlen => 500, + drop_mode_qlen => 1000, + flush_qlen => 5000, + burst_limit_enable => false, + overload_kill_enable => false} +

For log events from the emulator, synchronous message passing + mode is not applicable, since all messages are passed + asynchronously by the emulator. Drop mode is achieved by setting + the system_logger to undefined, forcing the + emulator to drop events until it is set back to the proxy pid + again.

+

The proxy uses + erlang:send_nosuspend/2 when sending log + events to a remote node. If the message could not be sent + without suspending the sender, it is dropped. This is to avoid + blocking the proxy process.

+
+
See Also

disk_log(3), + erlang(3), error_logger(3), logger(3), logger_disk_log_h(3), -- cgit v1.2.3