Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:23
erlang
3512-kernel-Expand-documentation-of-logger-log-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 3512-kernel-Expand-documentation-of-logger-log-with-fun.patch of Package erlang
From 4fe05a5dabd057ada2d637f38173e938e4e8468e Mon Sep 17 00:00:00 2001 From: Lukas Larsson <lukas@erlang.org> Date: Thu, 11 Feb 2021 09:52:33 +0100 Subject: [PATCH 2/2] kernel: Expand documentation of logger:log with fun --- lib/kernel/doc/src/logger.xml | 36 +++++++++++++++++++++++++-- lib/kernel/doc/src/logger_chapter.xml | 18 +++++++++----- 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/lib/kernel/doc/src/logger.xml b/lib/kernel/doc/src/logger.xml index 2f2417690b..acf695d112 100644 --- a/lib/kernel/doc/src/logger.xml +++ b/lib/kernel/doc/src/logger.xml @@ -450,12 +450,44 @@ logger:error("error happened because: ~p", [Reason]). % Without macro <type variable="FunArgs" name_i="4"/> <type variable="Metadata"/> <desc> - <p>Log the given message.</p> + <p>Create a log event at the given + <seeguide marker="logger_chapter#log_level">log level</seeguide>, + with the given <seeguide marker="logger_chapter#log_message">message</seeguide> + to be logged and + <seeguide marker="logger_chapter#metadata"><em>metadata</em></seeguide>. + Examples:</p> + <code> +%% A plain string +logger:log(info, "Hello World"). +%% A plain string with metadata +logger:log(debug, "Hello World", #{ meta => data }). +%% A format string with arguments +logger:log(warning, "The roof is on ~ts",[Cause]). +%% A report +logger:log(warning, #{ what => roof, cause => Cause }). + </code> + <p>The message and metadata can either be given directly in the arguments, + or returned from a fun. Passing a fun instead of the message/metadata directly is + useful in scenarios when the message/metadata is very expensive to compute. + This is because the fun is only evaluted when the message/metadata is + actually needed, which may be not at all if the log event is not + to be logged. Examples:</p> + <code> +%% A plain string with expensive metadata +logger:info(fun([]) -> {"Hello World", #{ meta => expensive() }} end,[]). +%% An expensive report +logger:debug(fun(What) -> #{ what => What, cause => expensive() } end,roof). +%% A plain string with expensive metadata and normal metadata +logger:debug(fun([]) -> {"Hello World", #{ meta => expensive() }} end,[], + #{ meta => data }). + </code> + <p>When metadata is given both as an argument and returned from the fun they + are merged. If equal keys exists the values are taken from the metadata + returned by the fun.</p> </desc> </func> </funcs> - <funcs> <fsdescription> <marker id="configuration_API"/> diff --git a/lib/kernel/doc/src/logger_chapter.xml b/lib/kernel/doc/src/logger_chapter.xml index b082607751..c2c70ce884 100644 --- a/lib/kernel/doc/src/logger_chapter.xml +++ b/lib/kernel/doc/src/logger_chapter.xml @@ -192,8 +192,18 @@ <p>The log message contains the information to be logged. The message can consist of a format string and arguments (given as two separate parameters in the Logger API), a string or a - report. The latter, which is either a map or a key-value list, - can be accompanied by a <em>report callback</em> specified in + report.</p> + <p>Example, format string and arguments:</p> + <code>logger:error("The file does not exist: ~ts",[Filename])</code> + <p>Example, string:</p> + <code>logger:notice("Something strange happened!")</code> + <p>A report, which is either a map or a key-value list, is + the preferred way to log using Logger as it makes it possible + for different backends to filter and format the log event as it + needs to.</p> + <p>Example, report:</p> + <code>?LOG_ERROR(#{ user => joe, filename => Filename, reason => enoent })</code> + <p>Reports can be accompanied by a <em>report callback</em> specified in the log event's <seeguide marker="#metadata">metadata</seeguide>. The report callback is a convenience function that the <seeguide marker="#formatters">formatter</seeguide> can use @@ -219,10 +229,6 @@ contain line breaks or not. This variant is used when the formatting of the report depends on the size or single line parameters.</p> - <p>Example, format string and arguments:</p> - <code>logger:error("The file does not exist: ~ts",[Filename])</code> - <p>Example, string:</p> - <code>logger:notice("Something strange happened!")</code> <p>Example, report, and metadata with report callback:</p> <code> logger:debug(#{got => connection_request, id => Id, state => State}, -- 2.26.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor