Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:23
erlang
3513-fix-logger-force-atom-format-strings-to-st...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 3513-fix-logger-force-atom-format-strings-to-strings.patch of Package erlang
From 17c8fcf13775e41b5e6f526d08ec9d218d79d1e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Niemier?= <lukasz@niemier.pl> Date: Tue, 27 Jul 2021 17:41:45 +0200 Subject: [PATCH] fix(logger): force atom format strings to strings This is meant to prevent situations when user will fire messages using logger:notice(string, [$a]). That would be accidentally treated the same as: logger:notice("a"). As earlier both produced message in form of `{string, "a"}`. Now it simply cast format strings to never be an atom. This isn't breaking change as message was defined to be `{io:format(), [term()]}`, which mean that both forms should be treated identically. --- lib/kernel/src/logger.erl | 8 ++++++-- lib/kernel/test/logger_SUITE.erl | 26 +++++++++++++++++++++----- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/lib/kernel/src/logger.erl b/lib/kernel/src/logger.erl index ea75c8d720..cf4baedffc 100644 --- a/lib/kernel/src/logger.erl +++ b/lib/kernel/src/logger.erl @@ -1119,12 +1119,13 @@ log_fun_allowed(Location, Level, FunRes, Meta, FunCall) -> Meta) end. -do_log_allowed(Level,{Format,Args}=Msg,Meta,Tid,Config) +do_log_allowed(Level,{Format,Args},Meta,Tid,Config) when ?IS_LEVEL(Level), ?IS_FORMAT(Format), is_list(Args), is_map(Meta) -> - logger_backend:log_allowed(#{level=>Level,msg=>Msg,meta=>Meta},Tid,Config); + logger_backend:log_allowed(#{level=>Level,msg=>{deatomize(Format),Args},meta=>Meta}, + Tid,Config); do_log_allowed(Level,Report,Meta,Tid,Config) when ?IS_LEVEL(Level), ?IS_REPORT(Report), @@ -1140,6 +1141,9 @@ do_log_allowed(Level,String,Meta,Tid,Config) tid() -> ets:whereis(?LOGGER_TABLE). +deatomize(Atom) when is_atom(Atom) -> atom_to_list(Atom); +deatomize(Other) -> Other. + log_remote(Node,Level,{Format,Args},Meta) -> log_remote(Node,{log,Level,Format,Args,Meta}); log_remote(Node,Level,Msg,Meta) -> diff --git a/lib/kernel/test/logger_SUITE.erl b/lib/kernel/test/logger_SUITE.erl index 82533ab572..851cc520d6 100644 --- a/lib/kernel/test/logger_SUITE.erl +++ b/lib/kernel/test/logger_SUITE.erl @@ -76,7 +76,7 @@ end_per_testcase(Case, Config) -> groups() -> []. -all() -> +all() -> [start_stop, add_remove_handler, multiple_handlers, @@ -102,7 +102,8 @@ all() -> process_metadata, app_config, kernel_config, - pretty_print]. + pretty_print, + pathological]. start_stop(_Config) -> S = whereis(logger), @@ -1219,6 +1220,21 @@ pretty_print(_Config) -> IHs = ["Handler configuration: \n"|IHs2], ok. +pathological(cleanup,_Config) -> + logger:remove_handler(p1), + logger:set_primary_config(level,notice), + logger:unset_module_level(?MODULE), + ok. + +pathological(_Config) -> + ok = logger:set_primary_config(level,all), + ok = logger:add_handler(p1,?MODULE,#{level=>all,filter_default=>log}), + logger:notice(string, []), + check_logged(notice,"string",[],#{}), + logger:notice(report, []), + check_logged(notice,"report",[],#{}), + ok. + internal_log(_Config) -> register(callback_receiver, self()), {error, {not_found, h1}} = logger:get_handler_config(h1), @@ -1299,7 +1315,7 @@ test_api(Level) -> logger:Level("~w: ~w",[Level,fa]), ok = check_logged(Level,"~w: ~w",[Level,fa],#{}), logger:Level('~w: ~w',[Level,fa]), - ok = check_logged(Level,'~w: ~w',[Level,fa],#{}), + ok = check_logged(Level,"~w: ~w",[Level,fa],#{}), logger:Level(<<"~w: ~w">>,[Level,fa]), ok = check_logged(Level,<<"~w: ~w">>,[Level,fa],#{}), logger:Level("~w: ~w ~w",[Level,fa,meta],#{my=>meta}), @@ -1312,7 +1328,7 @@ test_api(Level) -> ok = check_logged(Level,<<"~w: ~w ~w">>,[Level,fun_to_fa,meta],#{my=>meta}), logger:Level(fun(x) -> {'~w: ~w ~w',[Level,fun_to_fa,meta]} end,x, #{my=>meta}), - ok = check_logged(Level,'~w: ~w ~w',[Level,fun_to_fa,meta],#{my=>meta}), + ok = check_logged(Level,"~w: ~w ~w",[Level,fun_to_fa,meta],#{my=>meta}), logger:Level(fun(x) -> #{Level=>fun_to_r,meta=>true} end,x, #{my=>meta}), ok = check_logged(Level,#{Level=>fun_to_r,meta=>true},#{my=>meta}), @@ -1343,7 +1359,7 @@ test_log_function(Level) -> ok = check_logged(Level,<<"~w: ~w ~w">>,[Level,fun_to_fa,meta],#{my=>meta}), logger:log(Level,fun(x) -> {'~w: ~w ~w',[Level,fun_to_fa,meta]} end, x, #{my=>meta}), - ok = check_logged(Level,'~w: ~w ~w',[Level,fun_to_fa,meta],#{my=>meta}), + ok = check_logged(Level,"~w: ~w ~w",[Level,fun_to_fa,meta],#{my=>meta}), logger:log(Level,fun(x) -> #{Level=>fun_to_r,meta=>true} end, x, #{my=>meta}), ok = check_logged(Level,#{Level=>fun_to_r,meta=>true},#{my=>meta}), -- 2.31.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