Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:24
erlang
0265-logger-Don-t-use-original-meta-data-in-int...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0265-logger-Don-t-use-original-meta-data-in-internal-log.patch of Package erlang
From 8484bc7f9713f2bac3c0a1d56cab888524a18b6f Mon Sep 17 00:00:00 2001 From: Siri Hansen <siri.hansen@nordnet.se> Date: Mon, 7 Mar 2022 15:37:19 +0100 Subject: [PATCH] logger: Don't use original meta data in internal log logger_backend emits internal debug logs if a handler or a filter fails. This is done using the ?LOG_INTERNAL macro. Prior to this commit, these logs would get the meta data from the original failing log event. This commit instead uses the actual location of the internal debug log. The original meta data is still included as a part of the log report, so no data is lost. --- lib/kernel/src/logger_server.erl | 2 +- lib/kernel/test/logger_SUITE.erl | 27 ++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/lib/kernel/src/logger_server.erl b/lib/kernel/src/logger_server.erl index 942c0aac5a..dff30a95fc 100644 --- a/lib/kernel/src/logger_server.erl +++ b/lib/kernel/src/logger_server.erl @@ -623,7 +623,7 @@ do_internal_log(Level,Location,Log,[Report] = Data) -> do_internal_log(Level,Location,Log,[Fmt,Args] = Data) -> do_internal_log(Level,Location,Log,Data,{Fmt,Args}). do_internal_log(Level,Location,Log,Data,Msg) -> - Meta = logger:add_default_metadata(maps:merge(Location,maps:get(meta,Log,#{}))), + Meta = logger:add_default_metadata(Location), %% Spawn these to avoid deadlocks case Log of #{ meta := #{ internal_log_event := true } } -> diff --git a/lib/kernel/test/logger_SUITE.erl b/lib/kernel/test/logger_SUITE.erl index 3b99b21b4f..d2fae6bf94 100644 --- a/lib/kernel/test/logger_SUITE.erl +++ b/lib/kernel/test/logger_SUITE.erl @@ -103,7 +103,8 @@ all() -> app_config, kernel_config, pretty_print, - pathological]. + pathological, + internal_log]. start_stop(_Config) -> S = whereis(logger), @@ -1222,6 +1223,30 @@ pathological(_Config) -> check_logged(notice,"report",[],#{}), ok. +internal_log(_Config) -> + register(callback_receiver, self()), + {error, {not_found, h1}} = logger:get_handler_config(h1), + ok = logger:add_handler(h1, ?MODULE, #{tc_proc => self()}), + OriginalMeta = #{ + mfa => {orig_mod, orig_func, 0}, + line => 0, + file => "path/to/orig_mod.beam", + pid => self(), + time => logger:timestamp(), + gl => group_leader() + }, + OriginalLog = #{ + level => notice, + msg => "Original log", + meta => OriginalMeta + }, + Report = [{testing, internal_log}], + + ?LOG_INTERNAL(notice, OriginalLog, Report), + ok = check_logged(notice, Report, ?MY_LOC(1)), + + ok. + %%%----------------------------------------------------------------- %%% Internal check_logged(Level,Format,Args,Meta) -> -- 2.34.1
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