fix logger
This commit is contained in:
parent
2d10d37481
commit
dca3c0448a
@ -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;
|
||||||
|
|||||||
@ -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}
|
||||||
|
|||||||
@ -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.
|
||||||
|
|
||||||
|
|||||||
@ -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.
|
||||||
@ -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.
|
||||||
@ -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}}
|
||||||
}}
|
}}
|
||||||
]}
|
]}
|
||||||
|
|||||||
@ -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}}
|
||||||
}}
|
}}
|
||||||
]}
|
]}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user