diff options
| -rw-r--r-- | lib/kernel/src/logger_std_h.erl | 8 | ||||
| -rw-r--r-- | lib/kernel/test/logger_std_h_SUITE.erl | 49 | 
2 files changed, 54 insertions, 3 deletions
diff --git a/lib/kernel/src/logger_std_h.erl b/lib/kernel/src/logger_std_h.erl index c8f1acfca4..2b078ef091 100644 --- a/lib/kernel/src/logger_std_h.erl +++ b/lib/kernel/src/logger_std_h.erl @@ -170,9 +170,11 @@ check_h_config(_Type,[]) ->      ok.  normalize_config(#{type:={file,File}}=HConfig) -> -    HConfig#{type=>file,file=>File}; +    normalize_config(HConfig#{type=>file,file=>File});  normalize_config(#{type:={file,File,Modes}}=HConfig) -> -    HConfig#{type=>file,file=>File,modes=>Modes}; +    normalize_config(HConfig#{type=>file,file=>File,modes=>Modes}); +normalize_config(#{file:=File}=HConfig) -> +    HConfig#{file=>filename:absname(File)};  normalize_config(HConfig) ->      HConfig. @@ -188,7 +190,7 @@ merge_default_config(Name,Type,HConfig) ->  get_default_config(Name,file) ->       #{type => file, -       file => atom_to_list(Name), +       file => filename:absname(atom_to_list(Name)),         modes => [raw,append],         file_check => 0,         max_no_bytes => infinity, diff --git a/lib/kernel/test/logger_std_h_SUITE.erl b/lib/kernel/test/logger_std_h_SUITE.erl index 16ab0e97fc..2b2d509860 100644 --- a/lib/kernel/test/logger_std_h_SUITE.erl +++ b/lib/kernel/test/logger_std_h_SUITE.erl @@ -132,6 +132,7 @@ all() ->       bad_input,       reconfig,       file_opts, +     relative_file_path,       sync,       write_failure,       sync_failure, @@ -693,6 +694,54 @@ file_opts(Config) ->  file_opts(cleanup, _Config) ->      logger:remove_handler(?MODULE). +relative_file_path(_Config) -> +    {ok,Dir} = file:get_cwd(), +    AbsName1 = filename:join(Dir,?MODULE), +    ok = logger:add_handler(?MODULE, +                            logger_std_h, +                            #{config => #{type=>file}, +                              filter_default=>log, +                              filters=>?DEFAULT_HANDLER_FILTERS([?MODULE]), +                              formatter=>{?MODULE,self()}}), +    #{cb_state := #{handler_state := #{file:=AbsName1}}} = +        logger_olp:info(h_proc_name()), +    {ok,#{config := #{file:=AbsName1}}} = +        logger:get_handler_config(?MODULE), +    ok = logger:remove_handler(?MODULE), + +    RelName2 = filename:join(atom_to_list(?FUNCTION_NAME), +                             lists:concat([?FUNCTION_NAME,".log"])), +    AbsName2 = filename:join(Dir,RelName2), +    ok = logger:add_handler(?MODULE, +                            logger_std_h, +                            #{config => #{file => RelName2}, +                              filter_default=>log, +                              filters=>?DEFAULT_HANDLER_FILTERS([?MODULE]), +                              formatter=>{?MODULE,self()}}), +    #{cb_state := #{handler_state := #{file:=AbsName2}}} = +        logger_olp:info(h_proc_name()), +    {ok,#{config := #{file:=AbsName2}}} = +        logger:get_handler_config(?MODULE), +    logger:notice(M1=?msg,?domain), +    ?check(M1), +    B1 = ?bin(M1), +    try_read_file(AbsName2, {ok,B1}, filesync_rep_int()), + +    ok = file:set_cwd(".."), +    logger:notice(M2=?msg,?domain), +    ?check(M2), +    B20 = ?bin(M2), +    B2 = <<B1/binary,B20/binary>>, +    try_read_file(AbsName2, {ok,B2}, filesync_rep_int()), + +    {error,_} = logger:update_handler_config(?MODULE,config,#{file=>RelName2}), +    ok = logger:update_handler_config(?MODULE,config,#{file=>AbsName2}), +    ok = file:set_cwd(Dir), +    ok = logger:update_handler_config(?MODULE,config,#{file=>RelName2}), +    ok. +relative_file_path(cleanup,_Config) -> +    logger:remove_handler(?MODULE). +  sync(Config) ->      Dir = ?config(priv_dir,Config),  | 
