From dca3c0448a40def5443086f0b1a198bef13ce581 Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Thu, 14 May 2026 00:54:34 +0800 Subject: [PATCH] fix logger --- apps/light/src/efka_client.erl | 4 ++- apps/light/src/light_args.erl | 10 +++++--- apps/light/src/light_device.erl | 6 +++-- apps/light/src/light_mqtt_subscriber.erl | 32 +++++++++++++----------- apps/light/src/light_sup.erl | 8 +++--- config/sys-dev.config | 22 ++++++++++++---- config/sys-prod.config | 10 ++++++++ 7 files changed, 62 insertions(+), 30 deletions(-) diff --git a/apps/light/src/efka_client.erl b/apps/light/src/efka_client.erl index 424337d..a0e0607 100644 --- a/apps/light/src/efka_client.erl +++ b/apps/light/src/efka_client.erl @@ -10,6 +10,8 @@ -behaviour(gen_server). +-define(LOG_META, #{domain => [light]}). + %% 消息包 -record(efka_packet, { packet_id :: integer(), @@ -162,7 +164,7 @@ do_register(RegisterName, Socket) -> receive {tcp, Socket, Data} -> RegisterPacket = unpack(Data), - logger:debug("[efka_client] get register reply packet: ~p", [RegisterPacket]), + logger:debug("[efka_client] get register reply packet: ~p", [RegisterPacket], ?LOG_META), case RegisterPacket of #efka_packet{packet_id = PacketId, type = ?PACKET_TYPE_RESPONSE, message = #{<<"c">> := 1, <<"r">> := <<"ok">>}} -> ok; diff --git a/apps/light/src/light_args.erl b/apps/light/src/light_args.erl index e034c2c..aeebf5b 100644 --- a/apps/light/src/light_args.erl +++ b/apps/light/src/light_args.erl @@ -11,6 +11,8 @@ -behaviour(gen_server). +-define(LOG_META, #{domain => [light]}). + %% API -export([start_link/0]). -export([get_metric/0, get_param/0, push_metric/1, push_param/1, get_device_uuid/1]). @@ -69,13 +71,13 @@ init([]) -> {ok, Metrics} = efka_client:request_metric(), try convert_metric(Metrics) of {ok, MetricMap} -> - logger:debug("[light_args] init load metric_map: ~p", [MetricMap]), + logger:debug("[light_args] init load metric_map: ~p", [MetricMap], ?LOG_META), {ok, Param} = efka_client:request_param(), {ok, #state{metrics = MetricMap, param = Param}} catch _:Error:Stack-> - logger:warning("[light_args] request_metric get error: ~p, stack: ~p", [Error, Stack]), + logger:warning("[light_args] request_metric get error: ~p, stack: ~p", [Error, Stack], ?LOG_META), {ok, #state{metrics = #{}, param = #{}}} end. @@ -111,7 +113,7 @@ handle_cast({push_param, Param}, State = #state{}) -> handle_cast({push_metric, Metrics}, State = #state{}) -> try convert_metric(Metrics) of {ok, MetricMap} -> - logger:debug("[light_args] push metric_map: ~p", [MetricMap]), + logger:debug("[light_args] push metric_map: ~p", [MetricMap], ?LOG_META), {noreply, State#state{metrics = MetricMap}} catch _:_ -> {noreply, State} @@ -156,4 +158,4 @@ convert_metric(Metrics) when is_list(Metrics) -> (_) -> [] end, Metrics), - {ok, maps:from_list(MetricTuples)}. \ No newline at end of file + {ok, maps:from_list(MetricTuples)}. diff --git a/apps/light/src/light_device.erl b/apps/light/src/light_device.erl index a63d529..4786293 100644 --- a/apps/light/src/light_device.erl +++ b/apps/light/src/light_device.erl @@ -11,6 +11,8 @@ -behaviour(gen_server). +-define(LOG_META, #{domain => [light]}). + %% API -export([start_link/2]). -export([get_pid/1, get_name/1]). @@ -106,10 +108,10 @@ handle_cast({metric_data, Message}, State = #state{device_uuid = DeviceUUID, dat {noreply, State#state{data_counter = DataCounter + 1, status = 1}}; M when is_map(M) -> - logger:notice("[light_device] invalid map: ~p", [M]), + logger:notice("[light_device] invalid map: ~p", [M], ?LOG_META), {noreply, State}; Error -> - logger:notice("[light_device] jiffy decode error: ~p", [Error]), + logger:notice("[light_device] jiffy decode error: ~p", [Error], ?LOG_META), {noreply, State} end. diff --git a/apps/light/src/light_mqtt_subscriber.erl b/apps/light/src/light_mqtt_subscriber.erl index af2a130..46b040d 100644 --- a/apps/light/src/light_mqtt_subscriber.erl +++ b/apps/light/src/light_mqtt_subscriber.erl @@ -12,6 +12,8 @@ -behaviour(gen_server). +-define(LOG_META, #{domain => [light]}). + %% API -export([start_link/0]). @@ -51,23 +53,23 @@ start_link() -> init([]) -> %% 建立到emqx服务器的连接 Opts = emqx_opts(<<"light-subscriber">>), - logger:debug("[opts] is: ~p", [Opts]), + logger:debug("[opts] is: ~p", [Opts], ?LOG_META), case emqtt:start_link(Opts) of {ok, ConnPid} -> - logger:debug("[mqtt_subscriber] start conntecting, pid: ~p", [ConnPid]), + logger:debug("[mqtt_subscriber] start conntecting, pid: ~p", [ConnPid], ?LOG_META), {ok, _} = emqtt:connect(ConnPid), - logger:debug("[mqtt_subscriber] connect success"), + logger:debug("[mqtt_subscriber] connect success", [], ?LOG_META), %% 监听和设备的全部事件 SubscribeResult = emqtt:subscribe(ConnPid, ?Topics), - logger:debug("[mqtt_subscriber] subscribe topics: ~p, result is: ~p", [?Topics, SubscribeResult]), + logger:debug("[mqtt_subscriber] subscribe topics: ~p, result is: ~p", [?Topics, SubscribeResult], ?LOG_META), {ok, #state{conn_pid = ConnPid}}; ignore -> - logger:debug("[mqtt_subscriber] connect emqx get ignore"), + logger:debug("[mqtt_subscriber] connect emqx get ignore", [], ?LOG_META), {stop, ignore}; {error, Reason} -> - logger:debug("[mqtt_subscriber] connect emqx get error: ~p", [Reason]), + logger:debug("[mqtt_subscriber] connect emqx get error: ~p", [Reason], ?LOG_META), {stop, Reason} end. @@ -100,11 +102,11 @@ handle_cast(_Request, State = #state{}) -> {noreply, NewState :: #state{}, timeout() | hibernate} | {stop, Reason :: term(), NewState :: #state{}}). handle_info({disconnect, ReasonCode, Properties}, State = #state{}) -> - logger:debug("[mqtt_subscriber] Recv a DISONNECT packet - ReasonCode: ~p, Properties: ~p", [ReasonCode, Properties]), + logger:debug("[mqtt_subscriber] Recv a DISONNECT packet - ReasonCode: ~p, Properties: ~p", [ReasonCode, Properties], ?LOG_META), {stop, disconnected, State}; %% 必须要做到消息的快速分发,数据的json反序列需要在host进程进行 handle_info({publish, #{packet_id := _PacketId, payload := Payload, qos := Qos, topic := Topic}}, State = #state{conn_pid = _ConnPid}) -> - logger:debug("[mqtt_subscriber] Recv a topic: ~p, publish packet: ~p, qos: ~p", [Topic, Payload, Qos]), + logger:debug("[mqtt_subscriber] Recv a topic: ~p, publish packet: ~p, qos: ~p", [Topic, Payload, Qos], ?LOG_META), %% 将消息分发到对应的publisher进程去处理, 提高消息的处理速度; topic格式: /lighting/C0AA213BD7F0/data case Topic of <<"/lighting/", DeviceInfo/binary>> -> @@ -115,11 +117,11 @@ handle_info({publish, #{packet_id := _PacketId, payload := Payload, qos := Qos, end, {noreply, State}; handle_info({puback, Packet = #{packet_id := _PacketId}}, State = #state{}) -> - logger:debug("[mqtt_subscriber] receive puback packet: ~p", [Packet]), + logger:debug("[mqtt_subscriber] receive puback packet: ~p", [Packet], ?LOG_META), {noreply, State}; handle_info(Info, State = #state{}) -> - logger:debug("[mqtt_subscriber] get info: ~p", [Info]), + logger:debug("[mqtt_subscriber] get info: ~p", [Info], ?LOG_META), {noreply, State}. %% @private @@ -135,10 +137,10 @@ terminate(Reason, _State = #state{conn_pid = ConnPid}) when is_pid(ConnPid) -> {ok, _Props, _ReasonCode} = emqtt:unsubscribe(ConnPid, #{}, TopicNames), ok = emqtt:disconnect(ConnPid), - logger:debug("[light_mqtt_subscriber] terminate with reason: ~p", [Reason]), + logger:debug("[light_mqtt_subscriber] terminate with reason: ~p", [Reason], ?LOG_META), ok; terminate(Reason, _State) -> - logger:debug("[light_mqtt_subscriber] terminate with reason: ~p", [Reason]), + logger:debug("[light_mqtt_subscriber] terminate with reason: ~p", [Reason], ?LOG_META), ok. %% @private @@ -184,12 +186,12 @@ emqx_opts(ClientSuffix) when is_binary(ClientSuffix) -> dispatch(DeviceMac, Message) when is_binary(DeviceMac), is_binary(Message) -> case light_args:get_device_uuid(DeviceMac) of error -> - logger:notice("[mqtt_subscriber] device_mac: ~p, device_uuid not found", [DeviceMac]); + logger:notice("[mqtt_subscriber] device_mac: ~p, device_uuid not found", [DeviceMac], ?LOG_META); {ok, DeviceUUID} -> case light_device_sup:ensure_device_started(DeviceUUID) of {ok, DevicePid} -> light_device:metric_data(DevicePid, Message); {error, Reason} -> - logger:notice("[mqtt_subscriber] start device get error: ~p", [Reason]) + logger:notice("[mqtt_subscriber] start device get error: ~p", [Reason], ?LOG_META) end - end. \ No newline at end of file + end. diff --git a/apps/light/src/light_sup.erl b/apps/light/src/light_sup.erl index dfcb0c6..5b661eb 100644 --- a/apps/light/src/light_sup.erl +++ b/apps/light/src/light_sup.erl @@ -7,6 +7,8 @@ -behaviour(supervisor). +-define(LOG_META, #{domain => [light]}). + -export([start_link/0]). -export([init/1]). @@ -93,11 +95,11 @@ read_service_name() -> %% 获取配置的名称 RootDir = code:root_dir(), VersionFile = RootDir ++ "/.version", - logger:debug("[gateway_sup] version path is: ~p", [VersionFile]), + logger:debug("[gateway_sup] version path is: ~p", [VersionFile], ?LOG_META), case file:read_file(VersionFile) of {ok, RegisterName0} -> string:trim(RegisterName0); {error, Reason} -> - logger:warning("[light_app] read .version file get error: ~p", [Reason]), + logger:warning("[light_app] read .version file get error: ~p", [Reason], ?LOG_META), <<"light">> - end. \ No newline at end of file + end. diff --git a/config/sys-dev.config b/config/sys-dev.config index 537c05c..d64eac7 100644 --- a/config/sys-dev.config +++ b/config/sys-dev.config @@ -5,17 +5,17 @@ {heartbeat_ticker, 120}, {emqx_server, [ - {host, "39.98.184.67"}, - {port, 1883}, + {host, "118.178.229.213"}, + {port, 8080}, {tcp_opts, []}, - {username, "test"}, + {username, "light_user"}, {password, "test1234"}, {keepalive, 86400}, {retry_interval, 5} ]}, {efka_server, [ - {host, "39.98.184.67"}, + {host, "127.0.0.1"}, {port, 3361} ]} ]}, @@ -26,31 +26,43 @@ {logger, [ {handler, default, logger_std_h, #{ level => debug, - formatter => {logger_formatter, #{single_line => true}} + formatter => {logger_formatter, #{single_line => true}}, + filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}], + filter_default => stop }}, {handler, debug_file, logger_std_h, #{ level => debug, config => #{file => "debug.log"}, + filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}], + filter_default => stop, formatter => {logger_formatter, #{single_line => true}} }}, {handler, info_file, logger_std_h, #{ level => info, config => #{file => "info.log"}, + filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}], + filter_default => stop, formatter => {logger_formatter, #{single_line => true}} }}, {handler, notice_file, logger_std_h, #{ level => notice, config => #{file => "notice.log"}, + filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}], + filter_default => stop, formatter => {logger_formatter, #{single_line => true}} }}, {handler, warning_file, logger_std_h, #{ level => warning, config => #{file => "warning.log"}, + filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}], + filter_default => stop, formatter => {logger_formatter, #{single_line => true}} }}, {handler, error_file, logger_std_h, #{ level => error, config => #{file => "error.log"}, + filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}], + filter_default => stop, formatter => {logger_formatter, #{single_line => true}} }} ]} diff --git a/config/sys-prod.config b/config/sys-prod.config index 00b375c..879f992 100644 --- a/config/sys-prod.config +++ b/config/sys-prod.config @@ -30,26 +30,36 @@ {handler, debug_file, logger_std_h, #{ level => debug, config => #{file => "debug.log"}, + filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}], + filter_default => stop, formatter => {logger_formatter, #{single_line => true}} }}, {handler, info_file, logger_std_h, #{ level => info, config => #{file => "info.log"}, + filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}], + filter_default => stop, formatter => {logger_formatter, #{single_line => true}} }}, {handler, notice_file, logger_std_h, #{ level => notice, config => #{file => "notice.log"}, + filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}], + filter_default => stop, formatter => {logger_formatter, #{single_line => true}} }}, {handler, warning_file, logger_std_h, #{ level => warning, config => #{file => "warning.log"}, + filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}], + filter_default => stop, formatter => {logger_formatter, #{single_line => true}} }}, {handler, error_file, logger_std_h, #{ level => error, config => #{file => "error.log"}, + filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}], + filter_default => stop, formatter => {logger_formatter, #{single_line => true}} }} ]}