From eeb0cab3e33ff3f35ab1296ba5cfa94e68089547 Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Fri, 23 Nov 2018 18:11:46 +0800 Subject: [PATCH] Update proc meta-data for empty clientid (#1980) --- include/logger.hrl | 1 - src/emqx_connection.erl | 2 +- src/emqx_logger.erl | 22 ++++++++-------------- src/emqx_protocol.erl | 3 ++- src/emqx_session.erl | 2 +- src/emqx_ws_connection.erl | 2 +- 6 files changed, 13 insertions(+), 19 deletions(-) diff --git a/include/logger.hrl b/include/logger.hrl index bae279da2..db93d7f56 100644 --- a/include/logger.hrl +++ b/include/logger.hrl @@ -4,7 +4,6 @@ %%-------------------------------------------------------------------- -ifdef(LOG_HEADER). %% with header - -define(LOG(Level, Format, Args), begin (logger:log(Level,#{},#{report_cb => diff --git a/src/emqx_connection.erl b/src/emqx_connection.erl index ed8b90649..609ce25d6 100644 --- a/src/emqx_connection.erl +++ b/src/emqx_connection.erl @@ -153,7 +153,7 @@ init([Transport, RawSocket, Options]) -> ok = emqx_gc:init(GcPolicy), ok = emqx_misc:init_proc_mng_policy(Zone), - emqx_logger:add_metadata_peername(esockd_net:format(Peername)), + emqx_logger:set_metadata_peername(esockd_net:format(Peername)), gen_server:enter_loop(?MODULE, [{hibernate_after, IdleTimout}], State, self(), IdleTimout); {error, Reason} -> diff --git a/src/emqx_logger.erl b/src/emqx_logger.erl index 79979097c..b3c9e9d54 100644 --- a/src/emqx_logger.erl +++ b/src/emqx_logger.erl @@ -22,8 +22,8 @@ -export([error/1, error/2, error/3]). -export([critical/1, critical/2, critical/3]). --export([add_metadata_peername/1, add_metadata_client_id/1]). --export([add_proc_metadata/1]). +-export([set_metadata_peername/1, set_metadata_client_id/1]). +-export([set_proc_metadata/1]). -export([get_primary_log_level/0, set_primary_log_level/1]). -export([get_log_handlers/0, get_log_handler/1, set_log_handler_level/2]). @@ -63,20 +63,14 @@ critical(Format, Args) -> critical(Metadata, Format, Args) when is_map(Metadata) -> logger:critical(Format, Args, Metadata). +set_metadata_client_id(ClientId) -> + set_proc_metadata(#{client_id => ClientId}). -add_metadata_client_id(ClientId) -> - add_proc_metadata(#{client_id => ClientId}). +set_metadata_peername(Peername) -> + set_proc_metadata(#{peername => Peername}). -add_metadata_peername(Peername) -> - add_proc_metadata(#{peername => Peername}). - -add_proc_metadata(Meta) -> - case logger:get_process_metadata() of - undefined -> - logger:set_process_metadata(Meta); - OldMeta -> - logger:set_process_metadata(maps:merge(OldMeta, Meta)) - end. +set_proc_metadata(Meta) -> + logger:update_process_metadata(Meta). get_primary_log_level() -> #{level := Level} = logger:get_primary_config(), diff --git a/src/emqx_protocol.erl b/src/emqx_protocol.erl index f26445571..573b913f7 100644 --- a/src/emqx_protocol.erl +++ b/src/emqx_protocol.erl @@ -292,7 +292,7 @@ process_packet(?CONNECT_PACKET( NewClientId = maybe_use_username_as_clientid(ClientId, Username, PState), - emqx_logger:add_metadata_client_id(NewClientId), + emqx_logger:set_metadata_client_id(NewClientId), %% TODO: Mountpoint... %% Msg -> emqx_mountpoint:mount(MountPoint, Msg) @@ -315,6 +315,7 @@ process_packet(?CONNECT_PACKET( {ok, IsSuper} -> %% Maybe assign a clientId PState3 = maybe_assign_client_id(PState2#pstate{is_super = IsSuper}), + emqx_logger:set_metadata_client_id(PState3#pstate.client_id), %% Open session case try_open_session(PState3) of {ok, SPid, SP} -> diff --git a/src/emqx_session.erl b/src/emqx_session.erl index 068bcc6f0..b223dfdda 100644 --- a/src/emqx_session.erl +++ b/src/emqx_session.erl @@ -343,7 +343,7 @@ init([Parent, #{zone := Zone, max_inflight := MaxInflight, topic_alias_maximum := TopicAliasMaximum, will_msg := WillMsg}]) -> - emqx_logger:add_proc_metadata(#{client_id => ClientId}), + emqx_logger:set_metadata_client_id(ClientId), process_flag(trap_exit, true), true = link(ConnPid), IdleTimout = get_env(Zone, idle_timeout, 30000), diff --git a/src/emqx_ws_connection.erl b/src/emqx_ws_connection.erl index 759e127c1..77d2c058f 100644 --- a/src/emqx_ws_connection.erl +++ b/src/emqx_ws_connection.erl @@ -136,7 +136,7 @@ websocket_init(#state{request = Req, options = Options}) -> IdleTimout = emqx_zone:get_env(Zone, idle_timeout, 30000), lists:foreach(fun(Stat) -> put(Stat, 0) end, ?SOCK_STATS), - emqx_logger:add_metadata_peername(esockd_net:format(Peername)), + emqx_logger:set_metadata_peername(esockd_net:format(Peername)), {ok, #state{peername = Peername, sockname = Sockname, parser_state = ParserState,