diff --git a/apps/light/src/efka_client.erl b/apps/light/src/efka_client.erl index 1b2d235..424337d 100644 --- a/apps/light/src/efka_client.erl +++ b/apps/light/src/efka_client.erl @@ -162,7 +162,7 @@ do_register(RegisterName, Socket) -> receive {tcp, Socket, Data} -> RegisterPacket = unpack(Data), - lager:debug("[efka_client] get register reply packet: ~p", [RegisterPacket]), + logger:debug("[efka_client] get register reply packet: ~p", [RegisterPacket]), 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.app.src b/apps/light/src/light.app.src index 44e3925..a133f74 100644 --- a/apps/light/src/light.app.src +++ b/apps/light/src/light.app.src @@ -7,7 +7,6 @@ [ jiffy, emqtt, - lager, kernel, stdlib ]}, diff --git a/apps/light/src/light_args.erl b/apps/light/src/light_args.erl index 45e22c1..e034c2c 100644 --- a/apps/light/src/light_args.erl +++ b/apps/light/src/light_args.erl @@ -69,13 +69,13 @@ init([]) -> {ok, Metrics} = efka_client:request_metric(), try convert_metric(Metrics) of {ok, MetricMap} -> - lager:debug("[light_args] init load metric_map: ~p", [MetricMap]), + logger:debug("[light_args] init load metric_map: ~p", [MetricMap]), {ok, Param} = efka_client:request_param(), {ok, #state{metrics = MetricMap, param = Param}} catch _:Error:Stack-> - lager: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]), {ok, #state{metrics = #{}, param = #{}}} end. @@ -111,7 +111,7 @@ handle_cast({push_param, Param}, State = #state{}) -> handle_cast({push_metric, Metrics}, State = #state{}) -> try convert_metric(Metrics) of {ok, MetricMap} -> - lager:debug("[light_args] push metric_map: ~p", [MetricMap]), + logger:debug("[light_args] push metric_map: ~p", [MetricMap]), {noreply, State#state{metrics = MetricMap}} catch _:_ -> {noreply, State} diff --git a/apps/light/src/light_device.erl b/apps/light/src/light_device.erl index e950603..a63d529 100644 --- a/apps/light/src/light_device.erl +++ b/apps/light/src/light_device.erl @@ -106,10 +106,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) -> - lager:notice("[light_device] invalid map: ~p", [M]), + logger:notice("[light_device] invalid map: ~p", [M]), {noreply, State}; Error -> - lager:notice("[light_device] jiffy decode error: ~p", [Error]), + logger:notice("[light_device] jiffy decode error: ~p", [Error]), {noreply, State} end. diff --git a/apps/light/src/light_mqtt_subscriber.erl b/apps/light/src/light_mqtt_subscriber.erl index e1c1996..af2a130 100644 --- a/apps/light/src/light_mqtt_subscriber.erl +++ b/apps/light/src/light_mqtt_subscriber.erl @@ -51,23 +51,23 @@ start_link() -> init([]) -> %% 建立到emqx服务器的连接 Opts = emqx_opts(<<"light-subscriber">>), - lager:debug("[opts] is: ~p", [Opts]), + logger:debug("[opts] is: ~p", [Opts]), case emqtt:start_link(Opts) of {ok, ConnPid} -> - lager:debug("[mqtt_subscriber] start conntecting, pid: ~p", [ConnPid]), + logger:debug("[mqtt_subscriber] start conntecting, pid: ~p", [ConnPid]), {ok, _} = emqtt:connect(ConnPid), - lager:debug("[mqtt_subscriber] connect success"), + logger:debug("[mqtt_subscriber] connect success"), %% 监听和设备的全部事件 SubscribeResult = emqtt:subscribe(ConnPid, ?Topics), - lager:debug("[mqtt_subscriber] subscribe topics: ~p, result is: ~p", [?Topics, SubscribeResult]), + logger:debug("[mqtt_subscriber] subscribe topics: ~p, result is: ~p", [?Topics, SubscribeResult]), {ok, #state{conn_pid = ConnPid}}; ignore -> - lager:debug("[mqtt_subscriber] connect emqx get ignore"), + logger:debug("[mqtt_subscriber] connect emqx get ignore"), {stop, ignore}; {error, Reason} -> - lager:debug("[mqtt_subscriber] connect emqx get error: ~p", [Reason]), + logger:debug("[mqtt_subscriber] connect emqx get error: ~p", [Reason]), {stop, Reason} end. @@ -100,11 +100,11 @@ handle_cast(_Request, State = #state{}) -> {noreply, NewState :: #state{}, timeout() | hibernate} | {stop, Reason :: term(), NewState :: #state{}}). handle_info({disconnect, ReasonCode, Properties}, State = #state{}) -> - lager: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]), {stop, disconnected, State}; %% 必须要做到消息的快速分发,数据的json反序列需要在host进程进行 handle_info({publish, #{packet_id := _PacketId, payload := Payload, qos := Qos, topic := Topic}}, State = #state{conn_pid = _ConnPid}) -> - lager: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]), %% 将消息分发到对应的publisher进程去处理, 提高消息的处理速度; topic格式: /lighting/C0AA213BD7F0/data case Topic of <<"/lighting/", DeviceInfo/binary>> -> @@ -115,11 +115,11 @@ handle_info({publish, #{packet_id := _PacketId, payload := Payload, qos := Qos, end, {noreply, State}; handle_info({puback, Packet = #{packet_id := _PacketId}}, State = #state{}) -> - lager:debug("[mqtt_subscriber] receive puback packet: ~p", [Packet]), + logger:debug("[mqtt_subscriber] receive puback packet: ~p", [Packet]), {noreply, State}; handle_info(Info, State = #state{}) -> - lager:debug("[mqtt_subscriber] get info: ~p", [Info]), + logger:debug("[mqtt_subscriber] get info: ~p", [Info]), {noreply, State}. %% @private @@ -135,10 +135,10 @@ terminate(Reason, _State = #state{conn_pid = ConnPid}) when is_pid(ConnPid) -> {ok, _Props, _ReasonCode} = emqtt:unsubscribe(ConnPid, #{}, TopicNames), ok = emqtt:disconnect(ConnPid), - lager:debug("[light_mqtt_subscriber] terminate with reason: ~p", [Reason]), + logger:debug("[light_mqtt_subscriber] terminate with reason: ~p", [Reason]), ok; terminate(Reason, _State) -> - lager:debug("[light_mqtt_subscriber] terminate with reason: ~p", [Reason]), + logger:debug("[light_mqtt_subscriber] terminate with reason: ~p", [Reason]), ok. %% @private @@ -184,12 +184,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 -> - lager:notice("[mqtt_subscriber] device_mac: ~p, device_uuid not found", [DeviceMac]); + logger:notice("[mqtt_subscriber] device_mac: ~p, device_uuid not found", [DeviceMac]); {ok, DeviceUUID} -> case light_device_sup:ensure_device_started(DeviceUUID) of {ok, DevicePid} -> light_device:metric_data(DevicePid, Message); {error, Reason} -> - lager:notice("[mqtt_subscriber] start device get error: ~p", [Reason]) + logger:notice("[mqtt_subscriber] start device get error: ~p", [Reason]) end end. \ No newline at end of file diff --git a/apps/light/src/light_sup.erl b/apps/light/src/light_sup.erl index b03cf75..dfcb0c6 100644 --- a/apps/light/src/light_sup.erl +++ b/apps/light/src/light_sup.erl @@ -93,11 +93,11 @@ read_service_name() -> %% 获取配置的名称 RootDir = code:root_dir(), VersionFile = RootDir ++ "/.version", - lager:debug("[gateway_sup] version path is: ~p", [VersionFile]), + logger:debug("[gateway_sup] version path is: ~p", [VersionFile]), case file:read_file(VersionFile) of {ok, RegisterName0} -> string:trim(RegisterName0); {error, Reason} -> - lager:warning("[light_app] read .version file get error: ~p", [Reason]), + logger:warning("[light_app] read .version file get error: ~p", [Reason]), <<"light">> end. \ No newline at end of file diff --git a/config/sys-dev.config b/config/sys-dev.config index a8c3181..537c05c 100644 --- a/config/sys-dev.config +++ b/config/sys-dev.config @@ -20,39 +20,39 @@ ]} ]}, - %% 系统日志配置,系统日志为lager, 支持日志按日期自动分割 - {lager, [ - {colored, true}, - %% Whether to write a crash log, and where. Undefined means no crash logger. - {crash_log, "light.crash.log"}, - %% Maximum size in bytes of events in the crash log - defaults to 65536 - {crash_log_msg_size, 65536}, - %% Maximum size of the crash log in bytes, before its rotated, set - %% to 0 to disable rotation - default is 0 - {crash_log_size, 10485760}, - %% What time to rotate the crash log - default is no time - %% rotation. See the README for a description of this format. - {crash_log_date, "$D0"}, - %% Number of rotated crash logs to keep, 0 means keep only the - %% current one - default is 0 - {crash_log_count, 5}, - %% Whether to redirect error_logger messages into lager - defaults to true - {error_logger_redirect, true}, - - %% How big the gen_event mailbox can get before it is switched into sync mode - {async_threshold, 20}, - %% Switch back to async mode, when gen_event mailbox size decrease from `async_threshold' - %% to async_threshold - async_threshold_window - {async_threshold_window, 5}, - - {handlers, [ - %% debug | info | warning | error, 日志级别 - {lager_console_backend, debug}, - {lager_file_backend, [{file, "debug.log"}, {level, debug}, {size, 314572800}]}, - {lager_file_backend, [{file, "info.log"}, {level, info}, {size, 314572800}]}, - {lager_file_backend, [{file, "notice.log"}, {level, notice}, {size, 314572800}]}, - {lager_file_backend, [{file, "warning.log"}, {level, warning}, {size, 314572800}]}, - {lager_file_backend, [{file, "error.log"}, {level, error}, {size, 314572800}]} + %% 系统日志配置,使用 OTP Logger。 + {kernel, [ + {logger_level, debug}, + {logger, [ + {handler, default, logger_std_h, #{ + level => debug, + formatter => {logger_formatter, #{single_line => true}} + }}, + {handler, debug_file, logger_std_h, #{ + level => debug, + config => #{file => "debug.log"}, + formatter => {logger_formatter, #{single_line => true}} + }}, + {handler, info_file, logger_std_h, #{ + level => info, + config => #{file => "info.log"}, + formatter => {logger_formatter, #{single_line => true}} + }}, + {handler, notice_file, logger_std_h, #{ + level => notice, + config => #{file => "notice.log"}, + formatter => {logger_formatter, #{single_line => true}} + }}, + {handler, warning_file, logger_std_h, #{ + level => warning, + config => #{file => "warning.log"}, + formatter => {logger_formatter, #{single_line => true}} + }}, + {handler, error_file, logger_std_h, #{ + level => error, + config => #{file => "error.log"}, + formatter => {logger_formatter, #{single_line => true}} + }} ]} ]} diff --git a/config/sys-prod.config b/config/sys-prod.config index 1098232..00b375c 100644 --- a/config/sys-prod.config +++ b/config/sys-prod.config @@ -20,39 +20,38 @@ ]} ]}, - %% 系统日志配置,系统日志为lager, 支持日志按日期自动分割 - {lager, [ - {colored, true}, - %% Whether to write a crash log, and where. Undefined means no crash logger. - {crash_log, "light.crash.log"}, - %% Maximum size in bytes of events in the crash log - defaults to 65536 - {crash_log_msg_size, 65536}, - %% Maximum size of the crash log in bytes, before its rotated, set - %% to 0 to disable rotation - default is 0 - {crash_log_size, 10485760}, - %% What time to rotate the crash log - default is no time - %% rotation. See the README for a description of this format. - {crash_log_date, "$D0"}, - %% Number of rotated crash logs to keep, 0 means keep only the - %% current one - default is 0 - {crash_log_count, 5}, - %% Whether to redirect error_logger messages into lager - defaults to true - {error_logger_redirect, true}, - - %% How big the gen_event mailbox can get before it is switched into sync mode - {async_threshold, 20}, - %% Switch back to async mode, when gen_event mailbox size decrease from `async_threshold' - %% to async_threshold - async_threshold_window - {async_threshold_window, 5}, - - {handlers, [ - %% debug | info | warning | error, 日志级别 - % {lager_console_backend, debug}, - {lager_file_backend, [{file, "debug.log"}, {level, debug}, {size, 314572800}]}, - {lager_file_backend, [{file, "info.log"}, {level, info}, {size, 314572800}]}, - {lager_file_backend, [{file, "notice.log"}, {level, notice}, {size, 314572800}]}, - {lager_file_backend, [{file, "warning.log"}, {level, warning}, {size, 314572800}]}, - {lager_file_backend, [{file, "error.log"}, {level, error}, {size, 314572800}]} + %% 系统日志配置,使用 OTP Logger。 + {kernel, [ + {logger_level, debug}, + {logger, [ + {handler, default, logger_std_h, #{ + level => none + }}, + {handler, debug_file, logger_std_h, #{ + level => debug, + config => #{file => "debug.log"}, + formatter => {logger_formatter, #{single_line => true}} + }}, + {handler, info_file, logger_std_h, #{ + level => info, + config => #{file => "info.log"}, + formatter => {logger_formatter, #{single_line => true}} + }}, + {handler, notice_file, logger_std_h, #{ + level => notice, + config => #{file => "notice.log"}, + formatter => {logger_formatter, #{single_line => true}} + }}, + {handler, warning_file, logger_std_h, #{ + level => warning, + config => #{file => "warning.log"}, + formatter => {logger_formatter, #{single_line => true}} + }}, + {handler, error_file, logger_std_h, #{ + level => error, + config => #{file => "error.log"}, + formatter => {logger_formatter, #{single_line => true}} + }} ]} ]} diff --git a/rebar.config b/rebar.config index 72f5d4a..16cbf63 100644 --- a/rebar.config +++ b/rebar.config @@ -1,8 +1,7 @@ {erl_opts, [debug_info]}. {deps, [ {jiffy, ".*", {git, "https://github.com/davisp/jiffy.git", {tag, "1.1.1"}}}, - {emqtt, ".*", {git, "https://gitea.s5s8.com/anlicheng/emqtt.git", {tag, "v1.2"}}}, - {lager, ".*", {git,"https://github.com/erlang-lager/lager.git", {tag, "3.9.2"}}} + {emqtt, ".*", {git, "https://gitea.s5s8.com/anlicheng/emqtt.git", {tag, "v1.2"}}} ]}. {relx, [{release, {light, "1.0"}, @@ -36,6 +35,4 @@ ] }]}]}. -{erl_opts, [{parse_transform,lager_transform}]}. - {rebar_packages_cdn, "https://hexpm.upyun.com"}. diff --git a/rebar.lock b/rebar.lock index ff764d8..e412510 100644 --- a/rebar.lock +++ b/rebar.lock @@ -3,18 +3,11 @@ {git,"https://gitea.s5s8.com/anlicheng/emqtt.git", {ref,"c5a52dcb57cd23a4318e342b705f9f726e8d67a1"}}, 0}, - {<<"goldrush">>,{pkg,<<"goldrush">>,<<"0.1.9">>},1}, {<<"jiffy">>, {git,"https://github.com/davisp/jiffy.git", {ref,"9ea1b35b6e60ba21dfd4adbd18e7916a831fd7d4"}}, - 0}, - {<<"lager">>, - {git,"https://github.com/erlang-lager/lager.git", - {ref,"459a3b2cdd9eadd29e5a7ce5c43932f5ccd6eb88"}}, 0}]}. [ -{pkg_hash,[ - {<<"goldrush">>, <<"F06E5D5F1277DA5C413E84D5A2924174182FB108DABB39D5EC548B27424CD106">>}]}, -{pkg_hash_ext,[ - {<<"goldrush">>, <<"99CB4128CFFCB3227581E5D4D803D5413FA643F4EB96523F77D9E6937D994CEB">>}]} +{pkg_hash,[]}, +{pkg_hash_ext,[]} ].