From 5cae58c69129631c80c611d1870c3a20721cebf4 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 14 二月 2023 10:04:48 +0800
Subject: [PATCH] Merge branch 'wvp-28181-2.0' into main2

---
 src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java                                                    |    2 
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java |    3 
 src/main/java/com/genersoft/iot/vmp/gb28181/conf/ServerLoggerImpl.java                                       |   92 ++++++++++++++++++
 src/main/java/com/genersoft/iot/vmp/gb28181/conf/StackLoggerImpl.java                                        |  109 +++++++++++++++++++++
 doc/_content/introduction/deployment.md                                                                      |    2 
 src/main/java/com/genersoft/iot/vmp/gb28181/conf/DefaultProperties.java                                      |   29 +----
 src/main/resources/logback-spring-local.xml                                                                  |   49 +++------
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java                                          |    2 
 8 files changed, 227 insertions(+), 61 deletions(-)

diff --git a/doc/_content/introduction/deployment.md b/doc/_content/introduction/deployment.md
index 3f13867..a04aa45 100644
--- a/doc/_content/introduction/deployment.md
+++ b/doc/_content/introduction/deployment.md
@@ -28,7 +28,7 @@
 nohup java -jar wvp-pro-*.jar &
 ```
 war鍖咃細  
-涓嬭浇Tomcat鍚庡皢war鍖呮斁鍏ebapps涓紝鍚姩Tomcat浠ヨВ鍘媤ar鍖咃紝鍋滄Tomcat鍚庯紝鍒犻櫎ROOT鐩綍浠ュ強war鍖咃紝灏嗚В鍘嬪悗鐨剋ar鍖呯洰褰曢噸鍛藉悕涓篟OOT锛�
+涓嬭浇Tomcat鍚庡皢war鍖呮斁鍏ebapps涓紝鍚姩Tomcat浠ヨВ鍘媤ar鍖咃紝鍋滄Tomcat鍚庯紝鍒犻櫎ROOT鐩綍浠ュ強war鍖咃紝灏嗚В鍘嬪悗鐨剋ar鍖呯洰褰曢噸鍛藉悕涓篟OOT锛屽皢閰嶇疆鏂囦欢涓殑Server.port閰嶇疆涓轰笌Tomcat绔彛涓�鑷�
 鐒跺悗鍚姩Tomcat銆�  
 **鍚姩ZLM**
 ```shell
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java b/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
index 605e7cf..cfac446 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
@@ -65,7 +65,7 @@
 	private void addListeningPoint(String monitorIp, int port){
 		SipStackImpl sipStack;
 		try {
-			sipStack = (SipStackImpl)sipFactory.createSipStack(DefaultProperties.getProperties(monitorIp, false, userSetting.getSipLog()));
+			sipStack = (SipStackImpl)sipFactory.createSipStack(DefaultProperties.getProperties(monitorIp, userSetting.getSipLog()));
 		} catch (PeerUnavailableException e) {
 			logger.error("[Sip Server] SIP鏈嶅姟鍚姩澶辫触锛� 鐩戝惉鍦板潃{}澶辫触,璇锋鏌p鏄惁姝g‘", monitorIp);
 			return;
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/conf/DefaultProperties.java b/src/main/java/com/genersoft/iot/vmp/gb28181/conf/DefaultProperties.java
index 3cdf48d..59fa8f6 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/conf/DefaultProperties.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/conf/DefaultProperties.java
@@ -12,7 +12,7 @@
  */
 public class DefaultProperties {
 
-    public static Properties getProperties(String ip, boolean isDebug, boolean sipLog) {
+    public static Properties getProperties(String ip, boolean sipLog) {
         Properties properties = new Properties();
         properties.setProperty("javax.sip.STACK_NAME", "GB28181_SIP");
         properties.setProperty("javax.sip.IP_ADDRESS", ip);
@@ -25,9 +25,6 @@
          */
 
 //		 * gov/nist/javax/sip/SipStackImpl.class
-        if (isDebug) {
-            properties.setProperty("gov.nist.javax.sip.LOG_MESSAGE_CONTENT", "false");
-        }
         // 鎺ユ敹鎵�鏈塶otify璇锋眰锛屽嵆浣挎病鏈夎闃�
         properties.setProperty("gov.nist.javax.sip.DELIVER_UNSOLICITED_NOTIFY", "true");
         properties.setProperty("gov.nist.javax.sip.AUTOMATIC_DIALOG_ERROR_HANDLING", "false");
@@ -50,29 +47,13 @@
          */
         Logger logger = LoggerFactory.getLogger(AlarmNotifyMessageHandler.class);
         if (sipLog) {
-            if (logger.isDebugEnabled()) {
-                System.out.println("DEBUG");
-                properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "DEBUG");
-            }else if (logger.isInfoEnabled()) {
-                System.out.println("INFO1");
-                properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "INFO");
-            }else if (logger.isWarnEnabled()) {
-                System.out.println("WARNING");
-                properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "WARNING");
-            }else if (logger.isErrorEnabled()) {
-                System.out.println("ERROR");
-                properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "ERROR");
-            }else {
-                System.out.println("INFO2");
-                properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "INFO");
-            }
-            logger.info("[SIP鏃ュ織]绾у埆涓�: {}", properties.getProperty("gov.nist.javax.sip.TRACE_LEVEL"));
+            properties.setProperty("gov.nist.javax.sip.STACK_LOGGER", "com.genersoft.iot.vmp.gb28181.conf.StackLoggerImpl");
+            properties.setProperty("gov.nist.javax.sip.SERVER_LOGGER", "com.genersoft.iot.vmp.gb28181.conf.ServerLoggerImpl");
+            properties.setProperty("gov.nist.javax.sip.LOG_MESSAGE_CONTENT", "true");
+            logger.info("[SIP鏃ュ織]宸插紑鍚�");
         }else {
             logger.info("[SIP鏃ュ織]宸插叧闂�");
         }
-
-
-
         return properties;
     }
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/conf/ServerLoggerImpl.java b/src/main/java/com/genersoft/iot/vmp/gb28181/conf/ServerLoggerImpl.java
new file mode 100644
index 0000000..3fc1d37
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/conf/ServerLoggerImpl.java
@@ -0,0 +1,92 @@
+package com.genersoft.iot.vmp.gb28181.conf;
+
+import gov.nist.core.ServerLogger;
+import gov.nist.core.StackLogger;
+import gov.nist.javax.sip.message.SIPMessage;
+import gov.nist.javax.sip.stack.SIPTransactionStack;
+
+import javax.sip.SipStack;
+import java.util.Properties;
+
+public class ServerLoggerImpl implements ServerLogger {
+
+    private boolean showLog = true;
+
+    private SIPTransactionStack sipStack;
+
+    protected StackLogger stackLogger;
+
+    @Override
+    public void closeLogFile() {
+
+    }
+
+    @Override
+    public void logMessage(SIPMessage message, String from, String to, boolean sender, long time) {
+        if (!showLog) {
+            return;
+        }
+        StringBuilder stringBuilder = new StringBuilder();
+        stringBuilder.append(!sender? "鍙戦�侊細鐩爣--->" + from:"鎺ユ敹锛氭潵鑷�--->" + to)
+                .append("\r\n")
+                        .append(message);
+        this.stackLogger.logInfo(stringBuilder.toString());
+
+    }
+
+    @Override
+    public void logMessage(SIPMessage message, String from, String to, String status, boolean sender, long time) {
+        if (!showLog) {
+            return;
+        }
+        StringBuilder stringBuilder = new StringBuilder();
+        stringBuilder.append(!sender? "鍙戦�侊細 鐩爣->" + from :"鎺ユ敹锛氭潵鑷�->" + to)
+                .append("\r\n")
+                .append(message);
+        this.stackLogger.logInfo(stringBuilder.toString());
+    }
+
+    @Override
+    public void logMessage(SIPMessage message, String from, String to, String status, boolean sender) {
+        if (!showLog) {
+            return;
+        }
+        StringBuilder stringBuilder = new StringBuilder();
+        stringBuilder.append(!sender? "鍙戦�侊細 鐩爣->" + from :"鎺ユ敹锛氭潵鑷�->" + to)
+                .append("\r\n")
+                .append(message);
+        this.stackLogger.logInfo(stringBuilder.toString());
+    }
+
+    @Override
+    public void logException(Exception ex) {
+        if (!showLog) {
+            return;
+        }
+        this.stackLogger.logException(ex);
+    }
+
+    @Override
+    public void setStackProperties(Properties stackProperties) {
+        if (!showLog) {
+            return;
+        }
+        String TRACE_LEVEL = stackProperties.getProperty("gov.nist.javax.sip.TRACE_LEVEL");
+        if (TRACE_LEVEL != null) {
+            showLog = true;
+        }
+    }
+
+    @Override
+    public void setSipStack(SipStack sipStack) {
+        if (!showLog) {
+            return;
+        }
+        if(sipStack instanceof SIPTransactionStack) {
+            this.sipStack = (SIPTransactionStack)sipStack;
+            this.stackLogger = this.sipStack.getStackLogger();
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/conf/StackLoggerImpl.java b/src/main/java/com/genersoft/iot/vmp/gb28181/conf/StackLoggerImpl.java
new file mode 100644
index 0000000..5e67bdb
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/conf/StackLoggerImpl.java
@@ -0,0 +1,109 @@
+package com.genersoft.iot.vmp.gb28181.conf;
+
+import gov.nist.core.StackLogger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.Properties;
+
+@Component
+public class StackLoggerImpl implements StackLogger {
+
+    private final static Logger logger = LoggerFactory.getLogger(StackLoggerImpl.class);
+
+    @Override
+    public void logStackTrace() {
+
+    }
+
+    @Override
+    public void logStackTrace(int traceLevel) {
+        System.out.println("traceLevel: "  + traceLevel);
+    }
+
+    @Override
+    public int getLineCount() {
+        return 0;
+    }
+
+    @Override
+    public void logException(Throwable ex) {
+
+    }
+
+    @Override
+    public void logDebug(String message) {
+//        logger.debug(message);
+    }
+
+    @Override
+    public void logDebug(String message, Exception ex) {
+//        logger.debug(message);
+    }
+
+    @Override
+    public void logTrace(String message) {
+        logger.trace(message);
+    }
+
+    @Override
+    public void logFatalError(String message) {
+//        logger.error(message);
+    }
+
+    @Override
+    public void logError(String message) {
+//        logger.error(message);
+    }
+
+    @Override
+    public boolean isLoggingEnabled() {
+        return true;
+    }
+
+    @Override
+    public boolean isLoggingEnabled(int logLevel) {
+        return true;
+    }
+
+    @Override
+    public void logError(String message, Exception ex) {
+//        logger.error(message);
+    }
+
+    @Override
+    public void logWarning(String message) {
+        logger.warn(message);
+    }
+
+    @Override
+    public void logInfo(String message) {
+        logger.info(message);
+    }
+
+    @Override
+    public void disableLogging() {
+
+    }
+
+    @Override
+    public void enableLogging() {
+
+    }
+
+    @Override
+    public void setBuildTimeStamp(String buildTimeStamp) {
+
+    }
+
+    @Override
+    public void setStackProperties(Properties stackProperties) {
+
+    }
+
+    @Override
+    public String getLoggerName() {
+        return null;
+    }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
index 742b8bb..03ce619 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
@@ -105,7 +105,7 @@
                 }
             }
         } finally {
-            logger.info("[SEND]:SUCCESS:{}", message);
+//            logger.info("[SEND]:SUCCESS:{}", message);
         }
     }
 
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java
index 527b5d0..0c23ace 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java
@@ -67,8 +67,7 @@
     @Override
     public void process(RequestEvent evt) {
         SIPRequest sipRequest = (SIPRequest)evt.getRequest();
-        logger.info("鎺ユ敹鍒版秷鎭細" + evt.getRequest());
-        logger.debug("鎺ユ敹鍒版秷鎭細" + evt.getRequest());
+//        logger.info("鎺ユ敹鍒版秷鎭細" + evt.getRequest());
         String deviceId = SipUtils.getUserIdFromFromHeader(evt.getRequest());
         CallIdHeader callIdHeader = sipRequest.getCallIdHeader();
         // 鍏堜粠浼氳瘽鍐呮煡鎵�
diff --git a/src/main/resources/logback-spring-local.xml b/src/main/resources/logback-spring-local.xml
index 724d05e..80d1803 100644
--- a/src/main/resources/logback-spring-local.xml
+++ b/src/main/resources/logback-spring-local.xml
@@ -2,16 +2,22 @@
 <configuration debug="false">
 	<!--瀹氫箟鏃ュ織鏂囦欢鐨勫瓨鍌ㄥ湴鍧� -->
 	<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
-	<property name="LOG_HOME" value="logs/${spring.application.name}" />
+	<property name="LOG_HOME" value="logs" />
 
-	<!--<property name="COLOR_PATTERN" value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta( %replace(%caller{1}){'\t|Caller.{1}0|\r\n', ''})- %gray(%msg%xEx%n)" />-->
+	<substitutionProperty name="log.pattern" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr(%-80.80logger{79}){cyan} %clr(:){faint} %m%n%wEx"/>
+
+	<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
+	<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
+	<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
+
 	<!-- 鎺у埗鍙拌緭鍑� -->
 	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
 		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
 			<!--鏍煎紡鍖栬緭鍑猴細%d琛ㄧず鏃ユ湡锛�%thread琛ㄧず绾跨▼鍚嶏紝%-5level锛氱骇鍒粠宸︽樉绀�5涓瓧绗﹀搴�%msg锛氭棩蹇楁秷鎭紝%n鏄崲琛岀 -->
-			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
+			<pattern>${log.pattern}</pattern>
+			<charset>UTF-8</charset>
 		</encoder>
-		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+		<filter class="ch.qos.logback.classic.filter.ThresholdFilter" >
 			<!--涓嶵hresholdFilter鐨勫尯鍒�,鍏佽onmatch-->
 			<!--璁剧疆鏃ュ織绾у埆 鎺ユ敹info绾у埆鐨勬棩蹇�-->
 			<level>DEBUG</level>
@@ -32,6 +38,7 @@
 		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
 			<!--鏍煎紡鍖栬緭鍑猴細%d琛ㄧず鏃ユ湡锛�%thread琛ㄧず绾跨▼鍚嶏紝%-5level锛氱骇鍒粠宸︽樉绀�5涓瓧绗﹀搴�%msg锛氭棩蹇楁秷鎭紝%n鏄崲琛岀 -->
 			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
+			<charset>UTF-8</charset>
 		</encoder>
 		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
 			<!--涓嶵hresholdFilter鐨勫尯鍒�,鍏佽onmatch-->
@@ -53,32 +60,16 @@
 		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
 			<!--鏍煎紡鍖栬緭鍑猴細%d琛ㄧず鏃ユ湡锛�%thread琛ㄧず绾跨▼鍚嶏紝%-5level锛氱骇鍒粠宸︽樉绀�5涓瓧绗﹀搴�%msg锛氭棩蹇楁秷鎭紝%n鏄崲琛岀 -->
 			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
+			<charset>UTF-8</charset>
 		</encoder>
 		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
 			<!--璁剧疆鏃ュ織绾у埆,杩囨护鎺塱nfo鏃ュ織,鍙緭鍏rror鏃ュ織-->
 			<level>WARN</level>
-			<!--			<onMatch>ACCEPT</onMatch>  &lt;!&ndash; 鐢ㄨ繃婊ゅ櫒锛屽彧鎺ュ彈ERROR绾у埆鐨勬棩蹇椾俊鎭紝鍏朵綑鍏ㄩ儴杩囨护鎺� &ndash;&gt;-->
-			<!--			<onMismatch>DENY</onMismatch>-->
 		</filter>
 	</appender>
 
-	<!-- 鐢熸垚 druid鏃ュ織杩藉姞 -->
-	<appender name="druidSqlRollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
-		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-			<!--鍘嗗彶鏃ュ織鏂囦欢杈撳嚭鐨勬枃浠跺悕 -->
-			<FileNamePattern>${LOG_HOME}/druid-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
-			<!--鏃ュ織鏂囦欢淇濈暀澶╂暟 -->
-			<MaxHistory>30</MaxHistory>
-			<maxFileSize>50MB</maxFileSize>
-		</rollingPolicy>
-		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-			<!--鏍煎紡鍖栬緭鍑猴細%d琛ㄧず鏃ユ湡锛�%thread琛ㄧず绾跨▼鍚嶏紝%-5level锛氱骇鍒粠宸︽樉绀�5涓瓧绗﹀搴�%msg锛氭棩蹇楁秷鎭紝%n鏄崲琛岀 -->
-			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
-		</encoder>
-	</appender>
-
 	<!-- 鐢熸垚 SIP鏃ュ織杩藉姞 -->
-	<appender name="sipRollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
+	<appender name="SipRollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
 		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
 			<!--鍘嗗彶鏃ュ織鏂囦欢杈撳嚭鐨勬枃浠跺悕 -->
 			<FileNamePattern>${LOG_HOME}/sip-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
@@ -89,6 +80,7 @@
 		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
 			<!--鏍煎紡鍖栬緭鍑猴細%d琛ㄧず鏃ユ湡锛�%thread琛ㄧず绾跨▼鍚嶏紝%-5level锛氱骇鍒粠宸︽樉绀�5涓瓧绗﹀搴�%msg锛氭棩蹇楁秷鎭紝%n鏄崲琛岀 -->
 			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
+			<charset>UTF-8</charset>
 		</encoder>
 	</appender>
 
@@ -98,20 +90,13 @@
 		<appender-ref ref="STDOUT" />
 	</root>
 
-	<logger name="wvp" level="debug" additivity="true">
+	<logger name="com.genersoft.iot.vmp" level="info" additivity="true">
 		<appender-ref ref="RollingFileError"/>
 		<appender-ref ref="RollingFile"/>
 	</logger>
 
-	<logger name="GB28181_SIP" level="debug" additivity="true">
-		<appender-ref ref="RollingFileError"/>
-		<appender-ref ref="sipRollingFile"/>
+	<logger name="com.genersoft.iot.vmp.gb28181.conf.StackLoggerImpl" level="info" additivity="true">
+		<appender-ref ref="SipRollingFile" />
 	</logger>
 
-	<!--璁板綍druid-sql鐨勮褰�-->
-	<logger name="com.genersoft.iot.vmp.storager.dao" level="info" additivity="true">
-		<!--AppenderRef ref="Console"/-->
-		<appender-ref ref="RollingFileError"/>
-		<appender-ref ref="druidSqlRollingFile"/>
-	</logger>
 </configuration>
\ No newline at end of file

--
Gitblit v1.8.0