From 1e5d1485c33650681fc10c96a513087c90c69c1b Mon Sep 17 00:00:00 2001 From: liuqingkun Date: Fri, 26 May 2023 21:01:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commons/constant/BusinessConstant.java | 2 + .../netmc/handler/TCPMessageAdapter.java | 4 +- .../netmc/handler/UDPMessageAdapter.java | 2 +- .../yezhihao/netmc/session/Session.java | 2 +- .../websocket/WsChannelInboundHandler.java | 61 +++++++++---------- .../yzh/protocol/codec/JTMessageAdapter.java | 13 +++- .../yzh/web/controller/JT1078Controller.java | 16 ++--- .../org/yzh/web/endpoint/JT808Endpoint.java | 8 +-- .../org/yzh/web/endpoint/MessageManager.java | 6 +- .../yzh/web/service/SendCommandService.java | 32 +++++----- jtt808-server/src/main/resources/log4j2.xml | 18 ++---- 11 files changed, 81 insertions(+), 83 deletions(-) diff --git a/commons/src/main/java/org/yzh/commons/constant/BusinessConstant.java b/commons/src/main/java/org/yzh/commons/constant/BusinessConstant.java index 5852394..eb8c5a2 100644 --- a/commons/src/main/java/org/yzh/commons/constant/BusinessConstant.java +++ b/commons/src/main/java/org/yzh/commons/constant/BusinessConstant.java @@ -10,6 +10,7 @@ public interface BusinessConstant { * 默认通道号 */ Integer DEFAULT_CHANNEL_NO = 9; +// Integer DEFAULT_CHANNEL_NO = 1; /** * 直播推流状态 @@ -27,4 +28,5 @@ public interface BusinessConstant { * jtt1078服务IP地址 */ String JTT1078_SERVER_HOST = "112.6.27.89"; +// String JTT1078_SERVER_HOST = "192.168.1.106"; } diff --git a/jtt808-server/src/main/java/io/github/yezhihao/netmc/handler/TCPMessageAdapter.java b/jtt808-server/src/main/java/io/github/yezhihao/netmc/handler/TCPMessageAdapter.java index 63032ee..26d31db 100644 --- a/jtt808-server/src/main/java/io/github/yezhihao/netmc/handler/TCPMessageAdapter.java +++ b/jtt808-server/src/main/java/io/github/yezhihao/netmc/handler/TCPMessageAdapter.java @@ -56,7 +56,7 @@ public class TCPMessageAdapter extends ChannelInboundHandlerAdapter { @Override public void channelActive(ChannelHandlerContext ctx) { - log.info("<<<<< Connected{}", ctx.channel().remoteAddress()); + log.warn("<<<<< Connected{}", ctx.channel().remoteAddress()); } @Override @@ -68,7 +68,7 @@ public class TCPMessageAdapter extends ChannelInboundHandlerAdapter { session.invalidate(); } - log.info(">>>>> Disconnected clientId = {} , address = {}", clientId, client(ctx)); + log.warn(">>>>> Disconnected clientId = {} , address = {}", clientId, client(ctx)); // 若掉线设备为当前推流设备, 调用推流方法, 发送推流 if (clientId.equals(BusinessCacheUtil.getCurrentPushDevice()) && SendCommandUtil.getService() != null) { diff --git a/jtt808-server/src/main/java/io/github/yezhihao/netmc/handler/UDPMessageAdapter.java b/jtt808-server/src/main/java/io/github/yezhihao/netmc/handler/UDPMessageAdapter.java index 813b011..cdf9f48 100644 --- a/jtt808-server/src/main/java/io/github/yezhihao/netmc/handler/UDPMessageAdapter.java +++ b/jtt808-server/src/main/java/io/github/yezhihao/netmc/handler/UDPMessageAdapter.java @@ -62,7 +62,7 @@ public class UDPMessageAdapter extends ChannelInboundHandlerAdapter { if (session == null) { session = sessionManager.newInstance(ctx.channel(), sender, s -> sessionMap.remove(sender, s)); sessionMap.put(sender, session); - log.info("<<<<< Connected{}", session); + log.warn("<<<<< Connected{}", session); } return session; } diff --git a/jtt808-server/src/main/java/io/github/yezhihao/netmc/session/Session.java b/jtt808-server/src/main/java/io/github/yezhihao/netmc/session/Session.java index 5f45066..10f8600 100644 --- a/jtt808-server/src/main/java/io/github/yezhihao/netmc/session/Session.java +++ b/jtt808-server/src/main/java/io/github/yezhihao/netmc/session/Session.java @@ -78,7 +78,7 @@ public class Session { this.clientId = message.getClientId(); if (sessionManager != null) sessionManager.add(this); - log.info("<<<<< Registered{}", this); + log.warn("<<<<< Registered{}", this); } public boolean isRegistered() { diff --git a/jtt808-server/src/main/java/io/github/yezhihao/netmc/websocket/WsChannelInboundHandler.java b/jtt808-server/src/main/java/io/github/yezhihao/netmc/websocket/WsChannelInboundHandler.java index e06c356..559aeee 100644 --- a/jtt808-server/src/main/java/io/github/yezhihao/netmc/websocket/WsChannelInboundHandler.java +++ b/jtt808-server/src/main/java/io/github/yezhihao/netmc/websocket/WsChannelInboundHandler.java @@ -48,7 +48,7 @@ public class WsChannelInboundHandler extends SimpleChannelInboundHandler, MessageDecod } public void encodeLog(Session session, JTMessage message, ByteBuf output) { - if (log.isInfoEnabled()) + if (log.isInfoEnabled()) { log.info("{}\n>>>>>-{},hex[{}]", session, message, ByteBufUtil.hexDump(output)); + } else if (message.getMessageId() == JT1078.实时音视频传输请求) { + log.warn(BusinessConstant.LOGGER_PREFIX + " : >>>>>-{} ", message); + } } public void decodeLog(Session session, JTMessage message, ByteBuf input) { - if (log.isInfoEnabled()) + if (log.isInfoEnabled()) { log.info("{}\n<<<<<-{},hex[{}]", session, message, ByteBufUtil.hexDump(input, 0, input.writerIndex())); + } else if (message.getMessageId() == JT1078.实时音视频传输请求) { + log.warn(BusinessConstant.LOGGER_PREFIX + " : <<<<<-{} ", message); + } } } \ No newline at end of file diff --git a/jtt808-server/src/main/java/org/yzh/web/controller/JT1078Controller.java b/jtt808-server/src/main/java/org/yzh/web/controller/JT1078Controller.java index 341a26b..2b812da 100644 --- a/jtt808-server/src/main/java/org/yzh/web/controller/JT1078Controller.java +++ b/jtt808-server/src/main/java/org/yzh/web/controller/JT1078Controller.java @@ -49,7 +49,7 @@ public class JT1078Controller { @Operation(summary = "9101 实时音视频传输请求") @PostMapping("9101") public Mono> T9101(@RequestBody T9101 request) { - log.info(BusinessConstant.LOGGER_PREFIX + " : 9101 实时音视频传输请求 开始执行."); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 9101 实时音视频传输请求 开始执行."); Mono> resultMono = null; APIResult result = new APIResult<>(); @@ -58,7 +58,7 @@ public class JT1078Controller { int channelNo = request.getChannelNo(); // 若指定设备与当前推流设备相同, 直接返回 if (clientId.equals(BusinessCacheUtil.getCurrentPushDevice()) && channelNo == BusinessCacheUtil.getCurrentPushChannel()) { - log.info(BusinessConstant.LOGGER_PREFIX + " : T9101 {} - {}, 指定设备正在推流.", clientId, channelNo); + log.warn(BusinessConstant.LOGGER_PREFIX + " : T9101 {} - {}, 指定设备正在推流.", clientId, channelNo); result.setMsg("指定设备正在推流"); return Mono.create(sink -> { sink.success(result); @@ -66,7 +66,7 @@ public class JT1078Controller { } - log.info(BusinessConstant.LOGGER_PREFIX + " : T9101 - step1 : 当前推流设备 = {} - {} ", BusinessCacheUtil.getCurrentPushDevice(), BusinessCacheUtil.getCurrentPushChannel()); + log.warn(BusinessConstant.LOGGER_PREFIX + " : T9101 - step1 : 当前推流设备 = {} - {} ", BusinessCacheUtil.getCurrentPushDevice(), BusinessCacheUtil.getCurrentPushChannel()); // 先调用停止推流方法, 然后指定设备推流 if (StringUtil.isNullOrEmpty(BusinessCacheUtil.getCurrentPushDevice())) { T9102 t9102 = new T9102(); @@ -76,7 +76,7 @@ public class JT1078Controller { t9102.setCommand(0); t9102.setStreamType(0); - log.info(BusinessConstant.LOGGER_PREFIX + " : T9101 - step2 : 停止推流当前设备 : {} - {} ", BusinessCacheUtil.getCurrentPushDevice(), BusinessCacheUtil.getCurrentPushChannel()); + log.warn(BusinessConstant.LOGGER_PREFIX + " : T9101 - step2 : 停止推流当前设备 : {} - {} ", BusinessCacheUtil.getCurrentPushDevice(), BusinessCacheUtil.getCurrentPushChannel()); resultMono = messageManager.requestR(t9102, T0001.class); } @@ -89,7 +89,7 @@ public class JT1078Controller { SendCommandUtil.setService(sendCommandService); - log.info(BusinessConstant.LOGGER_PREFIX + " : T9101 - step3 : 开始推流 设备 = {} - {} ", request.getClientId(), BusinessConstant.DEFAULT_CHANNEL_NO); + log.warn(BusinessConstant.LOGGER_PREFIX + " : T9101 - step3 : 开始推流 设备 = {} - {} ", request.getClientId(), BusinessConstant.DEFAULT_CHANNEL_NO); sendCommandService.sendToDevice(request.getClientId(), null); return resultMono; } @@ -97,13 +97,13 @@ public class JT1078Controller { @Operation(summary = "9102 音视频实时传输控制") @PostMapping("9102") public Mono> T9102(@RequestBody T9102 request) { - log.info(BusinessConstant.LOGGER_PREFIX + " : T9102 - step1 : 停止推流 "); + log.warn(BusinessConstant.LOGGER_PREFIX + " : T9102 - step1 : 停止推流 "); Mono> resultMono = messageManager.requestR(request, T0001.class); // 若停止推流设备为正在推流设备, 触发推流方法 - log.info(BusinessConstant.LOGGER_PREFIX + " : T9102 - step2 : 当前推流设备 = {} - {} " + BusinessCacheUtil.getCurrentPushDevice(), BusinessCacheUtil.getCurrentPushChannel()); + log.warn(BusinessConstant.LOGGER_PREFIX + " : T9102 - step2 : 当前推流设备 = {} - {} " + BusinessCacheUtil.getCurrentPushDevice(), BusinessCacheUtil.getCurrentPushChannel()); if (request.getClientId().equals(BusinessCacheUtil.getCurrentPushDevice())) { - log.info(BusinessConstant.LOGGER_PREFIX + " : T9102 - step3 : 调用推流方法 "); + log.warn(BusinessConstant.LOGGER_PREFIX + " : T9102 - step3 : 调用推流方法 "); sendCommandService.sendToDevice(); } return resultMono; diff --git a/jtt808-server/src/main/java/org/yzh/web/endpoint/JT808Endpoint.java b/jtt808-server/src/main/java/org/yzh/web/endpoint/JT808Endpoint.java index 22af6ba..924bb80 100644 --- a/jtt808-server/src/main/java/org/yzh/web/endpoint/JT808Endpoint.java +++ b/jtt808-server/src/main/java/org/yzh/web/endpoint/JT808Endpoint.java @@ -77,10 +77,10 @@ public class JT808Endpoint { // 若无正在推流的设备, 调用推流方法 SendCommandUtil.setService(sendCommandService); if (StringUtil.isNullOrEmpty(BusinessCacheUtil.getCurrentPushDevice()) || BusinessCacheUtil.getCurrentPushDevice().equals(message.getClientId())) { - log.info(BusinessConstant.LOGGER_PREFIX + " : 终端鉴权触发 - 发送推流命令 : 当前指定推流设备 = {} -> 将要推流设备 = {} ", BusinessCacheUtil.getCurrentPushDevice(), message.getClientId()); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 终端注册触发 - 发送推流命令 : 当前指定推流设备 = {} -> 将要推流设备 = {} ", BusinessCacheUtil.getCurrentPushDevice(), message.getClientId()); sendCommandService.sendToDevice(message.getClientId(), null); } else { - log.info(BusinessConstant.LOGGER_PREFIX + " : 终端鉴权触发 - 发送推流命令 : 已有推流设备, 当前指定推流设备 = {}", BusinessCacheUtil.getCurrentPushDevice()); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 终端注册触发 - 发送推流命令 : 已有推流设备, 当前指定推流设备 = {}", BusinessCacheUtil.getCurrentPushDevice()); } T8100 result = new T8100(); @@ -105,10 +105,10 @@ public class JT808Endpoint { // 若无正在推流的设备, 调用推流方法 SendCommandUtil.setService(sendCommandService); if (StringUtil.isNullOrEmpty(BusinessCacheUtil.getCurrentPushDevice()) || BusinessCacheUtil.getCurrentPushDevice().equals(message.getClientId())) { - log.info(BusinessConstant.LOGGER_PREFIX + " : 终端鉴权触发 - 发送推流命令 : 当前指定推流设备 = {} -> 将要推流设备 = {} ", BusinessCacheUtil.getCurrentPushDevice(), message.getClientId()); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 终端鉴权触发 - 发送推流命令 : 当前指定推流设备 = {} -> 将要推流设备 = {} ", BusinessCacheUtil.getCurrentPushDevice(), message.getClientId()); sendCommandService.sendToDevice(message.getClientId(), null); } else { - log.info(BusinessConstant.LOGGER_PREFIX + " : 终端鉴权触发 - 发送推流命令 : 已有推流设备, 当前指定推流设备 = {}", BusinessCacheUtil.getCurrentPushDevice()); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 终端鉴权触发 - 发送推流命令 : 已有推流设备, 当前指定推流设备 = {}", BusinessCacheUtil.getCurrentPushDevice()); } T0001 result = new T0001(); diff --git a/jtt808-server/src/main/java/org/yzh/web/endpoint/MessageManager.java b/jtt808-server/src/main/java/org/yzh/web/endpoint/MessageManager.java index 733d261..157701a 100644 --- a/jtt808-server/src/main/java/org/yzh/web/endpoint/MessageManager.java +++ b/jtt808-server/src/main/java/org/yzh/web/endpoint/MessageManager.java @@ -82,16 +82,16 @@ public class MessageManager { if (session == null) return OFFLINE_RESULT; - log.info(BusinessConstant.LOGGER_PREFIX + " : 发送推流命令 : 参数 = {}", request.toString()); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 发送推流命令 : 参数 = {}", request.toString()); Mono> resultMono = session.request(request, responseClass) .map(message -> APIResult.ok(message)) .timeout(Duration.ofSeconds(10), TIMEOUT_RESULT) .onErrorResume(e -> { // log.warn("消息发送失败", e); - log.info(BusinessConstant.LOGGER_PREFIX + " : 发送推流命令 : 结果 = 消息发送失败. msg : {}", e); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 发送推流命令 : 结果 = 消息发送失败. msg : {}", e); return SENDFAIL_RESULT; }); - log.info(BusinessConstant.LOGGER_PREFIX + " : 发送推流命令 : 结果 = {}", resultMono.block().toString()); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 发送推流命令 : 结果 = {}", resultMono.block().toString()); return resultMono; } diff --git a/jtt808-server/src/main/java/org/yzh/web/service/SendCommandService.java b/jtt808-server/src/main/java/org/yzh/web/service/SendCommandService.java index a4a22b9..e6549db 100644 --- a/jtt808-server/src/main/java/org/yzh/web/service/SendCommandService.java +++ b/jtt808-server/src/main/java/org/yzh/web/service/SendCommandService.java @@ -67,7 +67,7 @@ public class SendCommandService { */ public void restartSendToDevice() { if (sendCommandToDeviceThread != null && sendCommandToDeviceThread.isAlive()) { - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice : 停止原线程, 重新开启线程 "); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice : 停止原线程, 重新开启线程 "); sendCommandToDeviceThread.interrupt(); } @@ -80,26 +80,26 @@ public class SendCommandService { public void sendToDevice() { if (sessionManager.all() == null || sessionManager.all().size() == 0) { // 当前无在线设备, 直接返回, 通知给慢直播设备离线 - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice : 当前无在线设备, 直接返回, 通知给慢直播设备离线 "); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice() : 当前无在线设备, 直接返回, 通知给慢直播设备离线 "); noticeCarStatus(null, null, BusinessConstant.LIVE_STATUS_OFFLINE); return; } - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice : 开始执行 "); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice() : 开始执行 "); if (sendCommandToDeviceThread != null && sendCommandToDeviceThread.isAlive()) { - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice : 已有线程执行推流, 直接返回 "); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice() : 已有线程执行推流, 直接返回 "); return; } noticeCarStatus(null, BusinessConstant.DEFAULT_CHANNEL_NO, BusinessConstant.LIVE_STATUS_WAITING); - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice : 启动线程, 开始执行发送推流命令 "); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice() : 启动线程, 开始执行发送推流命令 "); sendCommandToDeviceThread = new Thread(new Runnable() { @Override public void run() { for (Session session : sessionManager.all()) { - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice : 调用推流方法开始 "); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice() : 调用推流方法开始 "); boolean result = sendCommand(session.getClientId(), BusinessConstant.DEFAULT_CHANNEL_NO); // 只要有一个设备发送推流命令成功, 直接返回, 不继续向其他设备发送推流命令 @@ -123,7 +123,7 @@ public class SendCommandService { * @param channelNo */ public boolean sendToDevice(String clientId, Integer channelNo) { - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice {} - {} : 开始执行 ", clientId, channelNo); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice(clientId, channelNo) {} - {} : 开始执行 ", clientId, channelNo); channelNo = channelNo == null ? BusinessConstant.DEFAULT_CHANNEL_NO : channelNo; if (StringUtil.isNullOrEmpty(clientId)) { @@ -164,32 +164,28 @@ public class SendCommandService { boolean sendResult = resultObj.isSuccess(); // 若命令发送失败, 返回false if (!sendResult) { - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 : 发送命令失败 "); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法-sendCommand : 发送命令失败 "); return false; } // step2: 由于延迟原因, 等待1s后调用jtt1078上传到缓存的推流车辆, 确认设备是否已推流 - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 : 获取1078推流设备, 1s延迟开始 "); Thread.sleep(1000); - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 : 获取1078推流设备, 1s延迟结束 "); // step3: 调用3次, 失败后等待1s, 继续调用3次. 若仍然失败, 视为命令发送失败, 返回false int times = 0; while (times < 3) { // 调用jtt1078流媒体接口 String clientId1078 = BusinessCacheUtil.get1078PushDevice(); - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 : 1078推流设备 = {} ", clientId1078); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法-sendCommand : 1078推流设备 = {} ", clientId1078); // 判断返回的推流设备是否为发送命令的设备, 如果是, 返回true, 否则继续下次循环 if (clientId.equals(clientId1078)) { - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 : 推流设备 = 发送命令的设备, 返回推流成功"); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法-sendCommand : 推流设备 = 发送命令的设备, 返回推流成功"); noticeCarStatus(clientId, channelNo, BusinessConstant.LIVE_STATUS_ONLINE); return true; } - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 : 重试1s延迟开始 "); Thread.sleep(1000); - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 : 重试1s延迟结束 "); times++; } @@ -211,7 +207,7 @@ public class SendCommandService { public void noticeCarStatus(String clientId, Integer channelNo, String status) { // 若1078通知在线, 但此时无在线设备, 不再更新状态 if (BusinessConstant.LIVE_STATUS_ONLINE.equals(status) && (sessionManager.all() == null || sessionManager.all().size() == 0)) { - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 noticeCarStatus : 当前无在线设备, 将设备强制置为离线, 推送给慢直播服务"); + log.warn(BusinessConstant.LOGGER_PREFIX + " : noticeCarStatus(更新车辆状态缓存) : 当前无在线设备, 将设备强制置为离线, 推送给慢直播服务"); clientId = null; status = BusinessConstant.LIVE_STATUS_OFFLINE; } @@ -219,7 +215,7 @@ public class SendCommandService { // 若当前推流状态为离线, 且要更新的状态为等待, 直接返回. 离线状态不用切换等待状态 if (BusinessConstant.LIVE_STATUS_OFFLINE.equals(BusinessCacheUtil.getPushStatus()) && BusinessConstant.LIVE_STATUS_WAITING.equals(status)) { - log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 noticeCarStatus : 离线状态不用切换等待状态"); + log.warn(BusinessConstant.LOGGER_PREFIX + " : noticeCarStatus(更新车辆状态缓存) : 离线状态不用切换等待状态"); return; } @@ -235,8 +231,8 @@ public class SendCommandService { Map params = new HashMap<>(); params.put("clientId", clientId); params.put("carStat", status); - log.info(BusinessConstant.LOGGER_PREFIX + " : 调用慢直播服务接口 : 当前推流设备 = {} - {} - {}", clientId, channelNo, status); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 调用慢直播服务接口 : 当前推流设备 = {} - {} - {}", clientId, channelNo, status); String res = HttpClientUtils.doGet(url, params); - log.info(BusinessConstant.LOGGER_PREFIX + " : 调用慢直播服务接口 : 返回结果 = {}", res); + log.warn(BusinessConstant.LOGGER_PREFIX + " : 调用慢直播服务接口 : 返回结果 = {}", res); } } diff --git a/jtt808-server/src/main/resources/log4j2.xml b/jtt808-server/src/main/resources/log4j2.xml index 25f04e7..cbcb907 100644 --- a/jtt808-server/src/main/resources/log4j2.xml +++ b/jtt808-server/src/main/resources/log4j2.xml @@ -7,32 +7,26 @@ - + - - + + - - - - - - - - + - +