fix logger

This commit is contained in:
anlicheng 2026-05-14 00:54:34 +08:00
parent 2d10d37481
commit dca3c0448a
7 changed files with 62 additions and 30 deletions

View File

@ -10,6 +10,8 @@
-behaviour(gen_server). -behaviour(gen_server).
-define(LOG_META, #{domain => [light]}).
%% %%
-record(efka_packet, { -record(efka_packet, {
packet_id :: integer(), packet_id :: integer(),
@ -162,7 +164,7 @@ do_register(RegisterName, Socket) ->
receive receive
{tcp, Socket, Data} -> {tcp, Socket, Data} ->
RegisterPacket = unpack(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 case RegisterPacket of
#efka_packet{packet_id = PacketId, type = ?PACKET_TYPE_RESPONSE, message = #{<<"c">> := 1, <<"r">> := <<"ok">>}} -> #efka_packet{packet_id = PacketId, type = ?PACKET_TYPE_RESPONSE, message = #{<<"c">> := 1, <<"r">> := <<"ok">>}} ->
ok; ok;

View File

@ -11,6 +11,8 @@
-behaviour(gen_server). -behaviour(gen_server).
-define(LOG_META, #{domain => [light]}).
%% API %% API
-export([start_link/0]). -export([start_link/0]).
-export([get_metric/0, get_param/0, push_metric/1, push_param/1, get_device_uuid/1]). -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(), {ok, Metrics} = efka_client:request_metric(),
try convert_metric(Metrics) of try convert_metric(Metrics) of
{ok, MetricMap} -> {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, Param} = efka_client:request_param(),
{ok, #state{metrics = MetricMap, param = Param}} {ok, #state{metrics = MetricMap, param = Param}}
catch catch
_:Error:Stack-> _: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 = #{}}} {ok, #state{metrics = #{}, param = #{}}}
end. end.
@ -111,7 +113,7 @@ handle_cast({push_param, Param}, State = #state{}) ->
handle_cast({push_metric, Metrics}, State = #state{}) -> handle_cast({push_metric, Metrics}, State = #state{}) ->
try convert_metric(Metrics) of try convert_metric(Metrics) of
{ok, MetricMap} -> {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}} {noreply, State#state{metrics = MetricMap}}
catch _:_ -> catch _:_ ->
{noreply, State} {noreply, State}

View File

@ -11,6 +11,8 @@
-behaviour(gen_server). -behaviour(gen_server).
-define(LOG_META, #{domain => [light]}).
%% API %% API
-export([start_link/2]). -export([start_link/2]).
-export([get_pid/1, get_name/1]). -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}}; {noreply, State#state{data_counter = DataCounter + 1, status = 1}};
M when is_map(M) -> 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}; {noreply, State};
Error -> Error ->
logger:notice("[light_device] jiffy decode error: ~p", [Error]), logger:notice("[light_device] jiffy decode error: ~p", [Error], ?LOG_META),
{noreply, State} {noreply, State}
end. end.

View File

@ -12,6 +12,8 @@
-behaviour(gen_server). -behaviour(gen_server).
-define(LOG_META, #{domain => [light]}).
%% API %% API
-export([start_link/0]). -export([start_link/0]).
@ -51,23 +53,23 @@ start_link() ->
init([]) -> init([]) ->
%% emqx服务器的连接 %% emqx服务器的连接
Opts = emqx_opts(<<"light-subscriber">>), 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 case emqtt:start_link(Opts) of
{ok, ConnPid} -> {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), {ok, _} = emqtt:connect(ConnPid),
logger:debug("[mqtt_subscriber] connect success"), logger:debug("[mqtt_subscriber] connect success", [], ?LOG_META),
%% %%
SubscribeResult = emqtt:subscribe(ConnPid, ?Topics), 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}}; {ok, #state{conn_pid = ConnPid}};
ignore -> ignore ->
logger:debug("[mqtt_subscriber] connect emqx get ignore"), logger:debug("[mqtt_subscriber] connect emqx get ignore", [], ?LOG_META),
{stop, ignore}; {stop, ignore};
{error, Reason} -> {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} {stop, Reason}
end. end.
@ -100,11 +102,11 @@ handle_cast(_Request, State = #state{}) ->
{noreply, NewState :: #state{}, timeout() | hibernate} | {noreply, NewState :: #state{}, timeout() | hibernate} |
{stop, Reason :: term(), NewState :: #state{}}). {stop, Reason :: term(), NewState :: #state{}}).
handle_info({disconnect, ReasonCode, Properties}, State = #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}; {stop, disconnected, State};
%% json反序列需要在host进程进行 %% json反序列需要在host进程进行
handle_info({publish, #{packet_id := _PacketId, payload := Payload, qos := Qos, topic := Topic}}, State = #state{conn_pid = _ConnPid}) -> 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 %% publisher进程去处理, ; topic格式: /lighting/C0AA213BD7F0/data
case Topic of case Topic of
<<"/lighting/", DeviceInfo/binary>> -> <<"/lighting/", DeviceInfo/binary>> ->
@ -115,11 +117,11 @@ handle_info({publish, #{packet_id := _PacketId, payload := Payload, qos := Qos,
end, end,
{noreply, State}; {noreply, State};
handle_info({puback, Packet = #{packet_id := _PacketId}}, State = #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}; {noreply, State};
handle_info(Info, State = #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}. {noreply, State}.
%% @private %% @private
@ -135,10 +137,10 @@ terminate(Reason, _State = #state{conn_pid = ConnPid}) when is_pid(ConnPid) ->
{ok, _Props, _ReasonCode} = emqtt:unsubscribe(ConnPid, #{}, TopicNames), {ok, _Props, _ReasonCode} = emqtt:unsubscribe(ConnPid, #{}, TopicNames),
ok = emqtt:disconnect(ConnPid), 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; ok;
terminate(Reason, _State) -> 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. ok.
%% @private %% @private
@ -184,12 +186,12 @@ emqx_opts(ClientSuffix) when is_binary(ClientSuffix) ->
dispatch(DeviceMac, Message) when is_binary(DeviceMac), is_binary(Message) -> dispatch(DeviceMac, Message) when is_binary(DeviceMac), is_binary(Message) ->
case light_args:get_device_uuid(DeviceMac) of case light_args:get_device_uuid(DeviceMac) of
error -> 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} -> {ok, DeviceUUID} ->
case light_device_sup:ensure_device_started(DeviceUUID) of case light_device_sup:ensure_device_started(DeviceUUID) of
{ok, DevicePid} -> {ok, DevicePid} ->
light_device:metric_data(DevicePid, Message); light_device:metric_data(DevicePid, Message);
{error, Reason} -> {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
end. end.

View File

@ -7,6 +7,8 @@
-behaviour(supervisor). -behaviour(supervisor).
-define(LOG_META, #{domain => [light]}).
-export([start_link/0]). -export([start_link/0]).
-export([init/1]). -export([init/1]).
@ -93,11 +95,11 @@ read_service_name() ->
%% %%
RootDir = code:root_dir(), RootDir = code:root_dir(),
VersionFile = RootDir ++ "/.version", 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 case file:read_file(VersionFile) of
{ok, RegisterName0} -> {ok, RegisterName0} ->
string:trim(RegisterName0); string:trim(RegisterName0);
{error, Reason} -> {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">> <<"light">>
end. end.

View File

@ -5,17 +5,17 @@
{heartbeat_ticker, 120}, {heartbeat_ticker, 120},
{emqx_server, [ {emqx_server, [
{host, "39.98.184.67"}, {host, "118.178.229.213"},
{port, 1883}, {port, 8080},
{tcp_opts, []}, {tcp_opts, []},
{username, "test"}, {username, "light_user"},
{password, "test1234"}, {password, "test1234"},
{keepalive, 86400}, {keepalive, 86400},
{retry_interval, 5} {retry_interval, 5}
]}, ]},
{efka_server, [ {efka_server, [
{host, "39.98.184.67"}, {host, "127.0.0.1"},
{port, 3361} {port, 3361}
]} ]}
]}, ]},
@ -26,31 +26,43 @@
{logger, [ {logger, [
{handler, default, logger_std_h, #{ {handler, default, logger_std_h, #{
level => debug, 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, #{ {handler, debug_file, logger_std_h, #{
level => debug, level => debug,
config => #{file => "debug.log"}, config => #{file => "debug.log"},
filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}],
filter_default => stop,
formatter => {logger_formatter, #{single_line => true}} formatter => {logger_formatter, #{single_line => true}}
}}, }},
{handler, info_file, logger_std_h, #{ {handler, info_file, logger_std_h, #{
level => info, level => info,
config => #{file => "info.log"}, config => #{file => "info.log"},
filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}],
filter_default => stop,
formatter => {logger_formatter, #{single_line => true}} formatter => {logger_formatter, #{single_line => true}}
}}, }},
{handler, notice_file, logger_std_h, #{ {handler, notice_file, logger_std_h, #{
level => notice, level => notice,
config => #{file => "notice.log"}, config => #{file => "notice.log"},
filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}],
filter_default => stop,
formatter => {logger_formatter, #{single_line => true}} formatter => {logger_formatter, #{single_line => true}}
}}, }},
{handler, warning_file, logger_std_h, #{ {handler, warning_file, logger_std_h, #{
level => warning, level => warning,
config => #{file => "warning.log"}, config => #{file => "warning.log"},
filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}],
filter_default => stop,
formatter => {logger_formatter, #{single_line => true}} formatter => {logger_formatter, #{single_line => true}}
}}, }},
{handler, error_file, logger_std_h, #{ {handler, error_file, logger_std_h, #{
level => error, level => error,
config => #{file => "error.log"}, config => #{file => "error.log"},
filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}],
filter_default => stop,
formatter => {logger_formatter, #{single_line => true}} formatter => {logger_formatter, #{single_line => true}}
}} }}
]} ]}

View File

@ -30,26 +30,36 @@
{handler, debug_file, logger_std_h, #{ {handler, debug_file, logger_std_h, #{
level => debug, level => debug,
config => #{file => "debug.log"}, config => #{file => "debug.log"},
filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}],
filter_default => stop,
formatter => {logger_formatter, #{single_line => true}} formatter => {logger_formatter, #{single_line => true}}
}}, }},
{handler, info_file, logger_std_h, #{ {handler, info_file, logger_std_h, #{
level => info, level => info,
config => #{file => "info.log"}, config => #{file => "info.log"},
filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}],
filter_default => stop,
formatter => {logger_formatter, #{single_line => true}} formatter => {logger_formatter, #{single_line => true}}
}}, }},
{handler, notice_file, logger_std_h, #{ {handler, notice_file, logger_std_h, #{
level => notice, level => notice,
config => #{file => "notice.log"}, config => #{file => "notice.log"},
filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}],
filter_default => stop,
formatter => {logger_formatter, #{single_line => true}} formatter => {logger_formatter, #{single_line => true}}
}}, }},
{handler, warning_file, logger_std_h, #{ {handler, warning_file, logger_std_h, #{
level => warning, level => warning,
config => #{file => "warning.log"}, config => #{file => "warning.log"},
filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}],
filter_default => stop,
formatter => {logger_formatter, #{single_line => true}} formatter => {logger_formatter, #{single_line => true}}
}}, }},
{handler, error_file, logger_std_h, #{ {handler, error_file, logger_std_h, #{
level => error, level => error,
config => #{file => "error.log"}, config => #{file => "error.log"},
filters => [{domain_filter, {fun logger_filters:domain/2, {log, sub, [light]}}}],
filter_default => stop,
formatter => {logger_formatter, #{single_line => true}} formatter => {logger_formatter, #{single_line => true}}
}} }}
]} ]}