From b587ba125adcee0631bc816540779cca56f9099b Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期四, 01 二月 2024 12:03:11 +0800
Subject: [PATCH] 增加定时监测更新雷达连接状态

---
 src/main/java/com/ard/alarm/radar/service/impl/ArdEquipRadarServiceImpl.java |   94 ++--
 src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java                  |  292 ++++++++-------
 src/main/java/com/ard/alarm/radar/domain/ArdEquipRadar.java                  |  151 ++++---
 src/main/resources/logback-spring.xml                                        |  370 +++++++++---------
 src/main/resources/application-dev.yml                                       |    4 
 src/main/resources/application-prod.yml                                      |  150 ++++---
 src/main/java/com/ard/alarm/radar/service/IArdEquipRadarService.java         |   51 +-
 src/main/resources/application.yml                                           |    6 
 8 files changed, 583 insertions(+), 535 deletions(-)

diff --git a/src/main/java/com/ard/alarm/radar/domain/ArdEquipRadar.java b/src/main/java/com/ard/alarm/radar/domain/ArdEquipRadar.java
index 1bcadef..b085183 100644
--- a/src/main/java/com/ard/alarm/radar/domain/ArdEquipRadar.java
+++ b/src/main/java/com/ard/alarm/radar/domain/ArdEquipRadar.java
@@ -1,75 +1,76 @@
-package com.ard.alarm.radar.domain;
-
-import java.util.Date;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-
-/**
- * radar瀵硅薄 ard_equip_radar
- * 
- * @author zj
- * @date 2023-03-11
- */
-@Data
-public class ArdEquipRadar
-{
-    private static final long serialVersionUID = 1L;
-
-    /** id */
-    private String id;
-    /** 鍚嶇О */
-    private String name;
-    /** 绔彛 */
-    private Integer port;
-
-    /** 鎿嶄綔鍛榠d */
-    private String operate;
-
-    /** 鍒犻櫎鏍囪 */
-    private String delFlag;
-
-    /** 鐢ㄦ埛id */
-    private String userId;
-
-    /** 缁忓害 */
-    private Double longitude;
-
-    /** 缁村害 */
-    private Double latitude;
-
-    /** 楂樼▼ */
-    private Double altitude;
-
-    /** 瀹夎鏃堕棿 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date radarDate;
-
-    /** 閮ㄩ棬id */
-    private Long deptId;
-
-    /** 淇话瑙� */
-    private String pitch;
-
-    /** 濉攊d */
-    private String towerId;
-
-    /** 濉斿悕绉� */
-    @TableField(exist = false)
-    private String towerName;
-
-    /** 鍥惧儚瀹藉害 */
-    private String imageWidth;
-
-    /** 鍥惧儚楂樺害 */
-    private String imageHeight;
-
-    /** 鍨嬪彿 */
-    private String type;
-
-    /** ip */
-    private String ip;
-
-
-}
+package com.ard.alarm.radar.domain;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+/**
+ * radar瀵硅薄 ard_equip_radar
+ *
+ * @author zj
+ * @date 2023-03-11
+ */
+@Data
+public class ArdEquipRadar
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private String id;
+    /** 鍚嶇О */
+    private String name;
+    /** 绔彛 */
+    private Integer port;
+
+    /** 鎿嶄綔鍛榠d */
+    private String operate;
+
+    /** 鍒犻櫎鏍囪 */
+    private String delFlag;
+
+    /** 鐢ㄦ埛id */
+    private String userId;
+
+    /** 缁忓害 */
+    private Double longitude;
+
+    /** 缁村害 */
+    private Double latitude;
+
+    /** 楂樼▼ */
+    private Double altitude;
+
+    /** 瀹夎鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date radarDate;
+
+    /** 閮ㄩ棬id */
+    private Long deptId;
+
+    /** 淇话瑙� */
+    private String pitch;
+
+    /** 濉攊d */
+    private String towerId;
+
+    /** 濉斿悕绉� */
+    @TableField(exist = false)
+    private String towerName;
+
+    /** 鍥惧儚瀹藉害 */
+    private String imageWidth;
+
+    /** 鍥惧儚楂樺害 */
+    private String imageHeight;
+
+    /** 鍨嬪彿 */
+    private String type;
+
+    /** ip */
+    private String ip;
+
+    /** 杩炴帴鐘舵�� */
+    private String state;
+}
diff --git a/src/main/java/com/ard/alarm/radar/service/IArdEquipRadarService.java b/src/main/java/com/ard/alarm/radar/service/IArdEquipRadarService.java
index 97c6b45..ba01789 100644
--- a/src/main/java/com/ard/alarm/radar/service/IArdEquipRadarService.java
+++ b/src/main/java/com/ard/alarm/radar/service/IArdEquipRadarService.java
@@ -1,22 +1,29 @@
-package com.ard.alarm.radar.service;
-
-import java.util.List;
-import com.ard.alarm.radar.domain.ArdEquipRadar;
-
-/**
- * radarService鎺ュ彛
- * 
- * @author zj
- * @date 2023-03-11
- */
-public interface IArdEquipRadarService {
-
-    /**
-     * 鏌ヨradar鍒楄〃
-     *
-     * @param ardEquipRadar radar
-     * @return radar闆嗗悎
-     */
-    public List<ArdEquipRadar> selectArdEquipRadarList(ArdEquipRadar ardEquipRadar);
-    public ArdEquipRadar selectArdEquipRadarById(String radarId);
-}
\ No newline at end of file
+package com.ard.alarm.radar.service;
+
+import java.util.List;
+import com.ard.alarm.radar.domain.ArdEquipRadar;
+
+/**
+ * radarService鎺ュ彛
+ *
+ * @author zj
+ * @date 2023-03-11
+ */
+public interface IArdEquipRadarService {
+
+    /**
+     * 鏌ヨradar鍒楄〃
+     *
+     * @param ardEquipRadar radar
+     * @return radar闆嗗悎
+     */
+    public List<ArdEquipRadar> selectArdEquipRadarList(ArdEquipRadar ardEquipRadar);
+    public ArdEquipRadar selectArdEquipRadarById(String radarId);
+    /**
+     * 鏇存柊闆疯揪
+     *
+     * @param ardEquipRadar radar
+     * @return radar闆嗗悎
+     */
+    public int updateArdEquipRadar(ArdEquipRadar ardEquipRadar);
+}
diff --git a/src/main/java/com/ard/alarm/radar/service/impl/ArdEquipRadarServiceImpl.java b/src/main/java/com/ard/alarm/radar/service/impl/ArdEquipRadarServiceImpl.java
index 1cb657a..b92a697 100644
--- a/src/main/java/com/ard/alarm/radar/service/impl/ArdEquipRadarServiceImpl.java
+++ b/src/main/java/com/ard/alarm/radar/service/impl/ArdEquipRadarServiceImpl.java
@@ -1,41 +1,53 @@
-package com.ard.alarm.radar.service.impl;
-
-import java.util.List;
-
-import com.ard.alarm.external.domain.ArdEquipExternal;
-import com.ard.alarm.radar.domain.ArdEquipRadar;
-import com.ard.alarm.radar.mapper.ArdEquipRadarMapper;
-import com.ard.alarm.radar.service.IArdEquipRadarService;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-/**
- * radarService涓氬姟灞傚鐞�
- *
- * @author zj
- * @date 2023-03-11
- */
-@Service
-public class ArdEquipRadarServiceImpl implements IArdEquipRadarService {
-    @Autowired
-    private ArdEquipRadarMapper ardEquipRadarMapper;
-
-
-    /**
-     * 鏌ヨradar鍒楄〃
-     *
-     * @param ardEquipRadar radar
-     * @return radar
-     */
-    @Override
-    public List<ArdEquipRadar> selectArdEquipRadarList(ArdEquipRadar ardEquipRadar) {
-        QueryWrapper<ArdEquipRadar> queryWrapper = new QueryWrapper<>(ardEquipRadar);
-        return ardEquipRadarMapper.selectList(queryWrapper);
-    }
-
-    @Override
-    public ArdEquipRadar selectArdEquipRadarById(String radarId) {
-        return ardEquipRadarMapper.selectById(radarId);
-    }
-}
+package com.ard.alarm.radar.service.impl;
+
+import java.util.List;
+
+import com.ard.alarm.external.domain.ArdEquipExternal;
+import com.ard.alarm.radar.domain.ArdEquipRadar;
+import com.ard.alarm.radar.mapper.ArdEquipRadarMapper;
+import com.ard.alarm.radar.service.IArdEquipRadarService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * radarService涓氬姟灞傚鐞�
+ *
+ * @author zj
+ * @date 2023-03-11
+ */
+@Service
+public class ArdEquipRadarServiceImpl implements IArdEquipRadarService {
+    @Resource
+    private ArdEquipRadarMapper ardEquipRadarMapper;
+
+
+    /**
+     * 鏌ヨradar鍒楄〃
+     *
+     * @param ardEquipRadar radar
+     * @return radar
+     */
+    @Override
+    public List<ArdEquipRadar> selectArdEquipRadarList(ArdEquipRadar ardEquipRadar) {
+        QueryWrapper<ArdEquipRadar> queryWrapper = new QueryWrapper<>(ardEquipRadar);
+        return ardEquipRadarMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    public ArdEquipRadar selectArdEquipRadarById(String radarId) {
+        return ardEquipRadarMapper.selectById(radarId);
+    }
+    /**
+     * 鏇存柊闆疯揪
+     *
+     * @param ardEquipRadar radar
+     * @return radar
+     */
+    @Override
+    public int updateArdEquipRadar(ArdEquipRadar ardEquipRadar) {
+        return ardEquipRadarMapper.updateById(ardEquipRadar);
+    }
+}
diff --git a/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java b/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
index b30b2b5..e66e3e8 100644
--- a/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
+++ b/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
@@ -1,133 +1,159 @@
-package com.ard.utils.netty.tcp;
-
-import com.ard.alarm.radar.domain.ArdEquipRadar;
-import com.ard.alarm.radar.service.IArdEquipRadarService;
-import com.ard.utils.netty.config.NettyTcpConfiguration;
-import io.netty.bootstrap.Bootstrap;
-import io.netty.channel.*;
-import io.netty.channel.nio.NioEventLoopGroup;
-import io.netty.channel.socket.SocketChannel;
-import io.netty.channel.socket.nio.NioSocketChannel;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import java.util.*;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArraySet;
-import java.util.function.Consumer;
-
-/**
- * 瀹㈡埛绔垵濮嬪寲
- *
- * @author lijiamin
- */
-@Component
-@Slf4j(topic = "netty")
-@Order(2)
-public class ClientInitialize implements ApplicationRunner {
-    @Resource
-    NettyTcpConfiguration nettyTcpConfig;
-    @Resource
-    IArdEquipRadarService ardEquipRadarService;
-
-    private Bootstrap bootstrap;
-    public static CopyOnWriteArraySet<ArdEquipRadar> falseConnectSet = new CopyOnWriteArraySet();//澶辫触杩炴帴鐨勯浄杈維et
-    public static ConcurrentHashMap<String, ArdEquipRadar> trueConnectMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨勯浄杈�
-    public static ConcurrentHashMap<String, MessageHandler> SucMessageHandlerMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨勬姤鏂囪В鏋愬櫒
-    public static ConcurrentHashMap<String, Channel> SucChannelMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨刵etty閫氶亾
-
-    /**
-     * Netty鍒濆鍖栭厤缃�
-     */
-    public void initNettyTcp() {
-        EventLoopGroup eventLoopGroup = new NioEventLoopGroup();
-        bootstrap = new Bootstrap();
-        bootstrap.group(eventLoopGroup)
-                .channel(NioSocketChannel.class)
-                .option(ChannelOption.TCP_NODELAY, true)
-                .option(ChannelOption.SO_KEEPALIVE, true)
-                .handler(new ChannelInitializer<SocketChannel>() {
-                    @Override
-                    protected void initChannel(SocketChannel socketChannel) {
-                        socketChannel.pipeline().addLast(new ClientHandler());
-                    }
-                });
-
-        //寮傛鎸佺画鐩戝惉杩炴帴澶辫触鐨勫湴鍧�
-        CompletableFuture.runAsync(new Runnable() {
-            @Override
-            public void run() {
-                while (true) {
-                    try {
-                        if (falseConnectSet.size() != 0) {
-                            // 寰幆闆嗗悎鍐呭厓绱�
-                            falseConnectSet.forEach(new Consumer<ArdEquipRadar>() {
-                                @Override
-                                public void accept(ArdEquipRadar radar) {
-                                    connectServer(radar);
-                                }
-                            });
-                        }
-                        Thread.sleep(10000);
-                    } catch (Exception e) {
-                        log.error("Netty鍒濆鍖栭厤缃洃鍚湴鍧�鍑虹幇寮傚父");
-                        e.printStackTrace();
-                    }
-                }
-            }
-        });
-    }
-
-    /**
-     * 鏈嶅姟杩炴帴
-     *
-     * @param ardEquipRadar
-     */
-    public void connectServer(ArdEquipRadar ardEquipRadar) {
-        // 鑾峰彇鍦板潃鍙婄鍙�
-        String host = ardEquipRadar.getIp();
-        Integer port = ardEquipRadar.getPort();
-        String ipPort = host + ":" + port;
-        // 寮傛杩炴帴tcp鏈嶅姟绔�
-        bootstrap.remoteAddress(host, port).connect().addListener((ChannelFuture futureListener) -> {
-            if (futureListener.isSuccess()) {
-                log.debug("闆疯揪銆�" + ipPort + "銆戣繛鎺ユ垚鍔�");
-                // 杩炴帴鎴愬姛淇℃伅浠嶴et鎷旈櫎
-                falseConnectSet.remove(ardEquipRadar);
-                // 杩炴帴鎴愬姛淇℃伅鍐欏叆map
-                trueConnectMap.put(ipPort, ardEquipRadar);
-                SucMessageHandlerMap.put(ipPort, new MessageHandler());
-                SucChannelMap.put(ipPort, futureListener.channel());
-            } else {
-                log.debug("闆疯揪銆�" + ipPort + "銆戣繛鎺ュけ璐�");
-                futureListener.channel().close();
-                // 杩炴帴澶辫触淇℃伅鎻掑叆Set
-                falseConnectSet.add(ardEquipRadar);
-
-            }
-        });
-    }
-
-    /**
-     * 鍒濆鍖栨柟娉�
-     */
-    @Override
-    public void run(ApplicationArguments args) {
-        if (!nettyTcpConfig.getEnabled()) {
-            return;
-        }
-        initNettyTcp();//鍒濆鍖杗ettyTcp
-        List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar());
-        for (ArdEquipRadar ardEquipRadar : ardEquipRadars) {
-            String host = ardEquipRadar.getIp();
-            Integer port = Integer.valueOf(ardEquipRadar.getPort());
-            log.debug("TCP client try to connect radar銆�" + host + ":" + port + "銆�");
-            connectServer(ardEquipRadar);//杩炴帴姣忎竴涓浄杈炬湇鍔�
-        }
-    }
-}
+package com.ard.utils.netty.tcp;
+
+import com.ard.alarm.radar.domain.ArdEquipRadar;
+import com.ard.alarm.radar.service.IArdEquipRadarService;
+import com.ard.utils.netty.config.NettyTcpConfiguration;
+import io.netty.bootstrap.Bootstrap;
+import io.netty.channel.*;
+import io.netty.channel.nio.NioEventLoopGroup;
+import io.netty.channel.socket.SocketChannel;
+import io.netty.channel.socket.nio.NioSocketChannel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.function.Consumer;
+
+/**
+ * 瀹㈡埛绔垵濮嬪寲
+ *
+ * @author lijiamin
+ */
+@Component
+@Slf4j(topic = "netty")
+@Order(2)
+public class ClientInitialize implements ApplicationRunner {
+    @Resource
+    NettyTcpConfiguration nettyTcpConfig;
+    @Resource
+    IArdEquipRadarService ardEquipRadarService;
+
+    private Bootstrap bootstrap;
+    public static CopyOnWriteArraySet<ArdEquipRadar> falseConnectSet = new CopyOnWriteArraySet();//澶辫触杩炴帴鐨勯浄杈維et
+    public static ConcurrentHashMap<String, ArdEquipRadar> trueConnectMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨勯浄杈�
+    public static ConcurrentHashMap<String, MessageHandler> SucMessageHandlerMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨勬姤鏂囪В鏋愬櫒
+    public static ConcurrentHashMap<String, Channel> SucChannelMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨刵etty閫氶亾
+
+    /**
+     * Netty鍒濆鍖栭厤缃�
+     */
+    public void initNettyTcp() {
+        EventLoopGroup eventLoopGroup = new NioEventLoopGroup();
+        bootstrap = new Bootstrap();
+        bootstrap.group(eventLoopGroup)
+                .channel(NioSocketChannel.class)
+                .option(ChannelOption.TCP_NODELAY, true)
+                .option(ChannelOption.SO_KEEPALIVE, true)
+                .handler(new ChannelInitializer<SocketChannel>() {
+                    @Override
+                    protected void initChannel(SocketChannel socketChannel) {
+                        socketChannel.pipeline().addLast(new ClientHandler());
+                    }
+                });
+
+        //寮傛鎸佺画鐩戝惉杩炴帴澶辫触鐨勫湴鍧�
+        CompletableFuture.runAsync(new Runnable() {
+            @Override
+            public void run() {
+                while (true) {
+                    try {
+                        if (falseConnectSet.size() != 0) {
+                            // 寰幆闆嗗悎鍐呭厓绱�
+                            falseConnectSet.forEach(new Consumer<ArdEquipRadar>() {
+                                @Override
+                                public void accept(ArdEquipRadar radar) {
+                                    connectServer(radar);
+                                }
+                            });
+                        }
+                        Thread.sleep(10000);
+                    } catch (Exception e) {
+                        log.error("Netty鍒濆鍖栭厤缃洃鍚湴鍧�鍑虹幇寮傚父");
+                        e.printStackTrace();
+                    }
+                }
+            }
+        });
+    }
+
+    /**
+     * 鏈嶅姟杩炴帴
+     *
+     * @param ardEquipRadar
+     */
+    public void connectServer(ArdEquipRadar ardEquipRadar) {
+        // 鑾峰彇鍦板潃鍙婄鍙�
+        String host = ardEquipRadar.getIp();
+        Integer port = ardEquipRadar.getPort();
+        String ipPort = host + ":" + port;
+        // 寮傛杩炴帴tcp鏈嶅姟绔�
+        bootstrap.remoteAddress(host, port).connect().addListener((ChannelFuture futureListener) -> {
+            if (futureListener.isSuccess()) {
+                log.debug("闆疯揪銆�" + ipPort + "銆戣繛鎺ユ垚鍔�");
+                // 杩炴帴鎴愬姛淇℃伅浠嶴et鎷旈櫎
+                falseConnectSet.remove(ardEquipRadar);
+                // 杩炴帴鎴愬姛淇℃伅鍐欏叆map
+                trueConnectMap.put(ipPort, ardEquipRadar);
+                SucMessageHandlerMap.put(ipPort, new MessageHandler());
+                SucChannelMap.put(ipPort, futureListener.channel());
+            } else {
+                log.debug("闆疯揪銆�" + ipPort + "銆戣繛鎺ュけ璐�");
+                futureListener.channel().close();
+                // 杩炴帴澶辫触淇℃伅鎻掑叆Set
+                falseConnectSet.add(ardEquipRadar);
+
+            }
+        });
+    }
+
+    /**
+     * 鍒濆鍖栨柟娉�
+     */
+    @Override
+    public void run(ApplicationArguments args) {
+        if (!nettyTcpConfig.getEnabled()) {
+            return;
+        }
+        initNettyTcp();//鍒濆鍖杗ettyTcp
+        List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar());
+        for (ArdEquipRadar ardEquipRadar : ardEquipRadars) {
+            String host = ardEquipRadar.getIp();
+            Integer port = Integer.valueOf(ardEquipRadar.getPort());
+            log.debug("TCP client try to connect radar銆�" + host + ":" + port + "銆�");
+            connectServer(ardEquipRadar);//杩炴帴姣忎竴涓浄杈炬湇鍔�
+        }
+    }
+
+    /**
+     * 鐩戞祴闆疯揪杩炴帴鐘舵��
+     */
+    @Scheduled(cron = "0/5 * * * * ?")
+    public void monitorConnectStatus() {
+        log.debug("瀹氭椂鐩戞祴闆疯揪杩炴帴鐘舵��");
+        List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar());
+        ardEquipRadars.stream().forEach(ardEquipRadar ->{
+            if(trueConnectMap.contains(ardEquipRadar.getIp()+"_"+ardEquipRadar.getPort()))
+            {
+                if(!ardEquipRadar.getState().equals("1")) {
+                    ardEquipRadar.setState("1");
+                    ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
+                }
+            }
+            else
+            {
+                if(!ardEquipRadar.getState().equals("0")) {
+                    ardEquipRadar.setState("0");
+                    ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
+                }
+            }
+        });
+    }
+}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index ac119ec..9203fb2 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -66,10 +66,10 @@
 logging:
   level:
     hikSdk: info
-    mqtt: debug
+    mqtt: info
     netty: debug
     external: info
     camera: info
     tube: info
     digitization3: info
-    stealAlarm: info
\ No newline at end of file
+    stealAlarm: info
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 6be39a7..13649a0 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -1,75 +1,77 @@
-# 寮�鍙戠幆澧�
-server:
-  port: 8088
-# spring閰嶇疆
-spring:
-  servlet:
-    multipart:
-      enabled: true
-      max-file-size: 30MB
-      max-request-size: 30MB
-  datasource:
-    druid:
-      #寮�鍚痙ruid鐩戞帶web
-      stat-view-servlet:
-        enabled: true
-      driver-class-name: org.postgresql.Driver
-      url: jdbc:postgresql://192.168.2.15:5432/ry-vue
-      username: postgres
-      password: postgres
-      #鏈�澶ц繛鎺ユ暟
-      maxActive: 30
-      #鏈�灏忚繛鎺ユ暟
-      minIdle: 5
-      #鑾峰彇杩炴帴鐨勬渶澶х瓑寰呮椂闂�
-      maxWait: 10000
-      #瑙e喅mysql8灏忔椂鐨勯棶棰�
-      validation-query: SELECT 'X'
-      #绌洪棽杩炴帴鐨勬鏌ユ椂闂撮棿闅�
-      timeBetweenEvictionRunsMillis: 60000
-      #绌洪棽杩炴帴鏈�灏忕┖闂叉椂闂�
-      minEvictableIdleTimeMillis: 300000
-# netty閰嶇疆
-netty:
-  udp:
-    port: 40000
-    enabled: true
-  tcp:
-    enabled: true
-# mqtt閰嶇疆
-mqtt:
-  host: tcp://192.168.2.15:1883
-  clientId: client-2272
-  username: admin
-  password: admin
-  timeout: 100
-  keepalive: 60
-  enabled: true
-# 鐩楃數鎺ュ彛鍦板潃
-stealelec:
-  enabled: false
-  url: http://iot.zhdk.net:8090/Warning/GetWarning?userName=cy4oil
-  # 涓夊巶鏁板瓧鍖栧湴鍧�
-# 涓夊満鏁板瓧鍖�
-digitization3:
-  enabled: false
-# minio閰嶇疆
-minio:
-  endpoint: http://192.168.2.15:9001
-  accessKey: admin
-  secretKey: xzx12345
-# mybatis-plus閰嶇疆
-mybatis-plus:
-  type-aliases-package: com.ard.alarm.**.domain
-  mapper-locations: classpath:/mapper/*.xml
-# 鏃ュ織绛夌骇閰嶇疆
-logging:
-  level:
-    hikSdk: info
-    mqtt: debug
-    netty: info
-    external: info
-    camera: info
-    tube: info
-    digitization3: info
+# 寮�鍙戠幆澧�
+server:
+  port: 8088
+# spring閰嶇疆
+spring:
+  servlet:
+    multipart:
+      enabled: true
+      max-file-size: 30MB
+      max-request-size: 30MB
+  datasource:
+    druid:
+      #寮�鍚痙ruid鐩戞帶web
+      stat-view-servlet:
+        enabled: true
+      driver-class-name: org.postgresql.Driver
+      url: jdbc:postgresql://192.168.1.14:5432/ry-vue?stringtype=unspecified
+      username: postgres
+      password: postgres
+      #鏈�澶ц繛鎺ユ暟
+      maxActive: 30
+      #鏈�灏忚繛鎺ユ暟
+      minIdle: 5
+      #鑾峰彇杩炴帴鐨勬渶澶х瓑寰呮椂闂�
+      maxWait: 10000
+      #瑙e喅mysql8灏忔椂鐨勯棶棰�
+      validation-query: SELECT 'X'
+      #绌洪棽杩炴帴鐨勬鏌ユ椂闂撮棿闅�
+      timeBetweenEvictionRunsMillis: 60000
+      #绌洪棽杩炴帴鏈�灏忕┖闂叉椂闂�
+      minEvictableIdleTimeMillis: 300000
+# netty閰嶇疆
+netty:
+  udp:
+    port: 40000
+    enabled: true
+  tcp:
+    enabled: true
+# minio閰嶇疆
+minio:
+  endpoint: http://127.0.0.1:9001
+  accessKey: admin
+  secretKey: xzx12345
+# mqtt閰嶇疆
+mqtt:
+  host: tcp://192.168.1.14:1883
+  clientId: alarm14
+  username: admin
+  password: xzx12345
+  topic: tube
+  timeout: 100
+  keepalive: 60
+  enabled: true
+# 鐩楃數鎺ュ彛鍦板潃
+stealelec:
+  enabled: false
+  url: http://iot.zhdk.net:8090/Warning/GetWarning?userName=cy4oil
+  # 涓夊巶鏁板瓧鍖栧湴鍧�
+# 涓夊満鏁板瓧鍖�
+digitization3:
+  enabled: false
+
+# mybatis-plus閰嶇疆
+mybatis-plus:
+  type-aliases-package: com.ard.alarm.**.domain
+  mapper-locations: classpath:/mapper/*.xml
+# 鏃ュ織绛夌骇閰嶇疆
+logging:
+  level:
+    hikSdk: info
+    mqtt: info
+    netty: info
+    external: info
+    camera: info
+    tube: info
+    digitization3: info
     stealAlarm: info
\ No newline at end of file
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index caf4dfc..422e915 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,3 +1,3 @@
-spring:
-  profiles:
-    active: dev
\ No newline at end of file
+spring:
+  profiles:
+    active: dev
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
index 3522a31..bd0e77a 100644
--- a/src/main/resources/logback-spring.xml
+++ b/src/main/resources/logback-spring.xml
@@ -1,185 +1,185 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-    <!--鏃ュ織瀛樻斁璺緞-->
-    <property name="log.path" value="./logs"/>
-    <!-- 鏃ュ織杈撳嚭鏍煎紡 -->
-    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
-    <!--鎺у埗鍙拌緭鍑�-->
-    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-    </appender>
-    <!--绯荤粺鏃ュ織杈撳嚭-->
-    <appender name="sys-info" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}/sys-info.log</file>
-        <!--寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠�-->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!--鏃ュ織鏂囦欢鍚嶆牸寮�-->
-            <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
-            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
-            <maxHistory>60</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <!--杩囨护鐨勭骇鍒�-->
-            <level>INFO</level>
-            <!--鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛�-->
-            <onMatch>ACCEPT</onMatch>
-            <!--涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛�-->
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-    <!--绠$嚎娉勯湶鎶ヨ鏃ュ織杈撳嚭-->
-    <appender name="tube" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}/tube.log</file>
-        <!--寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠�-->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!--鏃ュ織鏂囦欢鍚嶆牸寮�-->
-            <fileNamePattern>${log.path}/tube.%d{yyyy-MM-dd}.log</fileNamePattern>
-            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
-            <maxHistory>60</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-    </appender>
-    <!--閫氱敤鍏夌數鎶ヨ鏃ュ織杈撳嚭-->
-    <appender name="camera" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}/camera.log</file>
-        <!--寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠�-->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!--鏃ュ織鏂囦欢鍚嶆牸寮�-->
-            <fileNamePattern>${log.path}/camera.%d{yyyy-MM-dd}.log</fileNamePattern>
-            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
-            <maxHistory>60</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-    </appender>
-    <!--澶栬仈璁惧鎶ヨ鏃ュ織杈撳嚭-->
-    <appender name="external" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}/external.log</file>
-        <!--寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠�-->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!--鏃ュ織鏂囦欢鍚嶆牸寮�-->
-            <fileNamePattern>${log.path}/external.%d{yyyy-MM-dd}.log</fileNamePattern>
-            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
-            <maxHistory>60</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-    </appender>
-    <!--Netty鏃ュ織杈撳嚭-->
-    <appender name="netty" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}/netty.log</file>
-        <!--寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠�-->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!--鏃ュ織鏂囦欢鍚嶆牸寮�-->
-            <fileNamePattern>${log.path}/netty.%d{yyyy-MM-dd}.log</fileNamePattern>
-            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
-            <maxHistory>60</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-    </appender>
-    <!--mqtt鏃ュ織杈撳嚭-->
-    <appender name="mqtt" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}/mqtt.log</file>
-        <!--寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠�-->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!--鏃ュ織鏂囦欢鍚嶆牸寮�-->
-            <fileNamePattern>${log.path}/mqtt.%d{yyyy-MM-dd}.log</fileNamePattern>
-            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
-            <maxHistory>60</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-    </appender>
-    <!--hikSdk鏃ュ織杈撳嚭-->
-    <appender name="hikSdk" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}/hikSdk.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!--鎸夊ぉ鍥炴粴daily-->
-            <fileNamePattern>${log.path}/hikSdk.%d{yyyy-MM-dd}.log</fileNamePattern>
-            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
-            <maxHistory>60</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-    </appender>
-    <!--stealAlarm鏃ュ織杈撳嚭-->
-    <appender name="stealAlarm" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}/stealAlarm.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!--鎸夊ぉ鍥炴粴daily-->
-            <fileNamePattern>${log.path}/stealAlarm.%d{yyyy-MM-dd}.log</fileNamePattern>
-            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
-            <maxHistory>60</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-    </appender>
-    <!--digitization3鏃ュ織杈撳嚭-->
-    <appender name="digitization3" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}/digitization3.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!--鎸夊ぉ鍥炴粴daily-->
-            <fileNamePattern>${log.path}/digitization3.%d{yyyy-MM-dd}.log</fileNamePattern>
-            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
-            <maxHistory>60</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-    </appender>
-    <root level="DEBUG">
-        <appender-ref ref="console"/>
-    </root>
-    <!--绯荤粺鎿嶄綔鏃ュ織-->
-    <root level="INFO">
-        <appender-ref ref="sys-info"/>
-    </root>
-
-    <!--tube鎿嶄綔鏃ュ織-->
-    <logger name="tube" level="INFO">
-        <appender-ref ref="tube"/>
-    </logger>
-    <!--camera鎿嶄綔鏃ュ織-->
-    <logger name="camera" level="INFO">
-        <appender-ref ref="camera"/>
-    </logger>
-    <!--external鎿嶄綔鏃ュ織-->
-    <logger name="external" level="INFO">
-        <appender-ref ref="external"/>
-    </logger>
-    <!--netty鎿嶄綔鏃ュ織-->
-    <logger name="netty" level="INFO">
-        <appender-ref ref="netty"/>
-    </logger>
-    <!--mqtt鎿嶄綔鏃ュ織-->
-    <logger name="mqtt" level="DEBUG">
-        <appender-ref ref="mqtt"/>
-    </logger>
-    <!--hikSdk鎿嶄綔鏃ュ織-->
-    <logger name="hikSdk" level="INFO">
-        <appender-ref ref="hikSdk"/>
-    </logger>
-    <!--digitization3鎿嶄綔鏃ュ織-->
-    <logger name="digitization3" level="INFO">
-        <appender-ref ref="digitization3"/>
-    </logger>
-    <!--stealAlarm鎿嶄綔鏃ュ織-->
-    <logger name="stealAlarm" level="INFO">
-        <appender-ref ref="stealAlarm"/>
-    </logger>
-</configuration>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <!--鏃ュ織瀛樻斁璺緞-->
+    <property name="log.path" value="./logs"/>
+    <!-- 鏃ュ織杈撳嚭鏍煎紡 -->
+    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
+    <!--鎺у埗鍙拌緭鍑�-->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+    <!--绯荤粺鏃ュ織杈撳嚭-->
+    <appender name="sys-info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/sys-info.log</file>
+        <!--寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠�-->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--鏃ュ織鏂囦欢鍚嶆牸寮�-->
+            <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!--杩囨护鐨勭骇鍒�-->
+            <level>INFO</level>
+            <!--鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛�-->
+            <onMatch>ACCEPT</onMatch>
+            <!--涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛�-->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!--绠$嚎娉勯湶鎶ヨ鏃ュ織杈撳嚭-->
+    <appender name="tube" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/tube.log</file>
+        <!--寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠�-->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--鏃ュ織鏂囦欢鍚嶆牸寮�-->
+            <fileNamePattern>${log.path}/tube.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+    <!--閫氱敤鍏夌數鎶ヨ鏃ュ織杈撳嚭-->
+    <appender name="camera" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/camera.log</file>
+        <!--寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠�-->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--鏃ュ織鏂囦欢鍚嶆牸寮�-->
+            <fileNamePattern>${log.path}/camera.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+    <!--澶栬仈璁惧鎶ヨ鏃ュ織杈撳嚭-->
+    <appender name="external" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/external.log</file>
+        <!--寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠�-->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--鏃ュ織鏂囦欢鍚嶆牸寮�-->
+            <fileNamePattern>${log.path}/external.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+    <!--Netty鏃ュ織杈撳嚭-->
+    <appender name="netty" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/netty.log</file>
+        <!--寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠�-->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--鏃ュ織鏂囦欢鍚嶆牸寮�-->
+            <fileNamePattern>${log.path}/netty.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+    <!--mqtt鏃ュ織杈撳嚭-->
+    <appender name="mqtt" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/mqtt.log</file>
+        <!--寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠�-->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--鏃ュ織鏂囦欢鍚嶆牸寮�-->
+            <fileNamePattern>${log.path}/mqtt.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+    <!--hikSdk鏃ュ織杈撳嚭-->
+    <appender name="hikSdk" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/hikSdk.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--鎸夊ぉ鍥炴粴daily-->
+            <fileNamePattern>${log.path}/hikSdk.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+    <!--stealAlarm鏃ュ織杈撳嚭-->
+    <appender name="stealAlarm" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/stealAlarm.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--鎸夊ぉ鍥炴粴daily-->
+            <fileNamePattern>${log.path}/stealAlarm.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+    <!--digitization3鏃ュ織杈撳嚭-->
+    <appender name="digitization3" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/digitization3.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--鎸夊ぉ鍥炴粴daily-->
+            <fileNamePattern>${log.path}/digitization3.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�-->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+    <root level="DEBUG">
+        <appender-ref ref="console"/>
+    </root>
+    <!--绯荤粺鎿嶄綔鏃ュ織-->
+    <root level="INFO">
+        <appender-ref ref="sys-info"/>
+    </root>
+
+    <!--tube鎿嶄綔鏃ュ織-->
+    <logger name="tube" level="INFO">
+        <appender-ref ref="tube"/>
+    </logger>
+    <!--camera鎿嶄綔鏃ュ織-->
+    <logger name="camera" level="INFO">
+        <appender-ref ref="camera"/>
+    </logger>
+    <!--external鎿嶄綔鏃ュ織-->
+    <logger name="external" level="INFO">
+        <appender-ref ref="external"/>
+    </logger>
+    <!--netty鎿嶄綔鏃ュ織-->
+    <logger name="netty" level="INFO">
+        <appender-ref ref="netty"/>
+    </logger>
+    <!--mqtt鎿嶄綔鏃ュ織-->
+    <logger name="mqtt" level="DEBUG">
+        <appender-ref ref="mqtt"/>
+    </logger>
+    <!--hikSdk鎿嶄綔鏃ュ織-->
+    <logger name="hikSdk" level="INFO">
+        <appender-ref ref="hikSdk"/>
+    </logger>
+    <!--digitization3鎿嶄綔鏃ュ織-->
+    <logger name="digitization3" level="INFO">
+        <appender-ref ref="digitization3"/>
+    </logger>
+    <!--stealAlarm鎿嶄綔鏃ュ織-->
+    <logger name="stealAlarm" level="INFO">
+        <appender-ref ref="stealAlarm"/>
+    </logger>
+</configuration>
+

--
Gitblit v1.9.3