Commit d79eec25b06b26491ae07f6f8dc02ba18eb77919

Authored by 648540858
1 parent b010e63d

优化日志打印,去除数据库打印,优化控制台打印效果

doc/_content/introduction/deployment.md
... ... @@ -28,7 +28,7 @@ jar包:
28 28 nohup java -jar wvp-pro-*.jar &
29 29 ```
30 30 war包:
31   -下载Tomcat后将war包放入webapps中,启动Tomcat以解压war包,停止Tomcat后,删除ROOT目录以及war包,将解压后的war包目录重命名为ROOT,
  31 +下载Tomcat后将war包放入webapps中,启动Tomcat以解压war包,停止Tomcat后,删除ROOT目录以及war包,将解压后的war包目录重命名为ROOT,将配置文件中的Server.port配置为与Tomcat端口一致
32 32 然后启动Tomcat。
33 33 **启动ZLM**
34 34 ```shell
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
... ... @@ -65,7 +65,7 @@ public class SipLayer implements CommandLineRunner {
65 65 private void addListeningPoint(String monitorIp, int port){
66 66 SipStackImpl sipStack;
67 67 try {
68   - sipStack = (SipStackImpl)sipFactory.createSipStack(DefaultProperties.getProperties(monitorIp, false, userSetting.getSipLog()));
  68 + sipStack = (SipStackImpl)sipFactory.createSipStack(DefaultProperties.getProperties(monitorIp, userSetting.getSipLog()));
69 69 } catch (PeerUnavailableException e) {
70 70 logger.error("[Sip Server] SIP服务启动失败, 监听地址{}失败,请检查ip是否正确", monitorIp);
71 71 return;
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/conf/DefaultProperties.java
... ... @@ -12,7 +12,7 @@ import java.util.Properties;
12 12 */
13 13 public class DefaultProperties {
14 14  
15   - public static Properties getProperties(String ip, boolean isDebug, boolean sipLog) {
  15 + public static Properties getProperties(String ip, boolean sipLog) {
16 16 Properties properties = new Properties();
17 17 properties.setProperty("javax.sip.STACK_NAME", "GB28181_SIP");
18 18 properties.setProperty("javax.sip.IP_ADDRESS", ip);
... ... @@ -25,9 +25,6 @@ public class DefaultProperties {
25 25 */
26 26  
27 27 // * gov/nist/javax/sip/SipStackImpl.class
28   - if (isDebug) {
29   - properties.setProperty("gov.nist.javax.sip.LOG_MESSAGE_CONTENT", "false");
30   - }
31 28 // 接收所有notify请求,即使没有订阅
32 29 properties.setProperty("gov.nist.javax.sip.DELIVER_UNSOLICITED_NOTIFY", "true");
33 30 properties.setProperty("gov.nist.javax.sip.AUTOMATIC_DIALOG_ERROR_HANDLING", "false");
... ... @@ -50,29 +47,13 @@ public class DefaultProperties {
50 47 */
51 48 Logger logger = LoggerFactory.getLogger(AlarmNotifyMessageHandler.class);
52 49 if (sipLog) {
53   - if (logger.isDebugEnabled()) {
54   - System.out.println("DEBUG");
55   - properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "DEBUG");
56   - }else if (logger.isInfoEnabled()) {
57   - System.out.println("INFO1");
58   - properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "INFO");
59   - }else if (logger.isWarnEnabled()) {
60   - System.out.println("WARNING");
61   - properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "WARNING");
62   - }else if (logger.isErrorEnabled()) {
63   - System.out.println("ERROR");
64   - properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "ERROR");
65   - }else {
66   - System.out.println("INFO2");
67   - properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "INFO");
68   - }
69   - logger.info("[SIP日志]级别为: {}", properties.getProperty("gov.nist.javax.sip.TRACE_LEVEL"));
  50 + properties.setProperty("gov.nist.javax.sip.STACK_LOGGER", "com.genersoft.iot.vmp.gb28181.conf.StackLoggerImpl");
  51 + properties.setProperty("gov.nist.javax.sip.SERVER_LOGGER", "com.genersoft.iot.vmp.gb28181.conf.ServerLoggerImpl");
  52 + properties.setProperty("gov.nist.javax.sip.LOG_MESSAGE_CONTENT", "true");
  53 + logger.info("[SIP日志]已开启");
70 54 }else {
71 55 logger.info("[SIP日志]已关闭");
72 56 }
73   -
74   -
75   -
76 57 return properties;
77 58 }
78 59 }
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/conf/ServerLoggerImpl.java 0 → 100644
  1 +package com.genersoft.iot.vmp.gb28181.conf;
  2 +
  3 +import gov.nist.core.ServerLogger;
  4 +import gov.nist.core.StackLogger;
  5 +import gov.nist.javax.sip.message.SIPMessage;
  6 +import gov.nist.javax.sip.stack.SIPTransactionStack;
  7 +
  8 +import javax.sip.SipStack;
  9 +import java.util.Properties;
  10 +
  11 +public class ServerLoggerImpl implements ServerLogger {
  12 +
  13 + private boolean showLog = true;
  14 +
  15 + private SIPTransactionStack sipStack;
  16 +
  17 + protected StackLogger stackLogger;
  18 +
  19 + @Override
  20 + public void closeLogFile() {
  21 +
  22 + }
  23 +
  24 + @Override
  25 + public void logMessage(SIPMessage message, String from, String to, boolean sender, long time) {
  26 + if (!showLog) {
  27 + return;
  28 + }
  29 + StringBuilder stringBuilder = new StringBuilder();
  30 + stringBuilder.append(!sender? "发送:目标--->" + from:"接收:来自--->" + to)
  31 + .append("\r\n")
  32 + .append(message);
  33 + this.stackLogger.logInfo(stringBuilder.toString());
  34 +
  35 + }
  36 +
  37 + @Override
  38 + public void logMessage(SIPMessage message, String from, String to, String status, boolean sender, long time) {
  39 + if (!showLog) {
  40 + return;
  41 + }
  42 + StringBuilder stringBuilder = new StringBuilder();
  43 + stringBuilder.append(!sender? "发送: 目标->" + from :"接收:来自->" + to)
  44 + .append("\r\n")
  45 + .append(message);
  46 + this.stackLogger.logInfo(stringBuilder.toString());
  47 + }
  48 +
  49 + @Override
  50 + public void logMessage(SIPMessage message, String from, String to, String status, boolean sender) {
  51 + if (!showLog) {
  52 + return;
  53 + }
  54 + StringBuilder stringBuilder = new StringBuilder();
  55 + stringBuilder.append(!sender? "发送: 目标->" + from :"接收:来自->" + to)
  56 + .append("\r\n")
  57 + .append(message);
  58 + this.stackLogger.logInfo(stringBuilder.toString());
  59 + }
  60 +
  61 + @Override
  62 + public void logException(Exception ex) {
  63 + if (!showLog) {
  64 + return;
  65 + }
  66 + this.stackLogger.logException(ex);
  67 + }
  68 +
  69 + @Override
  70 + public void setStackProperties(Properties stackProperties) {
  71 + if (!showLog) {
  72 + return;
  73 + }
  74 + String TRACE_LEVEL = stackProperties.getProperty("gov.nist.javax.sip.TRACE_LEVEL");
  75 + if (TRACE_LEVEL != null) {
  76 + showLog = true;
  77 + }
  78 + }
  79 +
  80 + @Override
  81 + public void setSipStack(SipStack sipStack) {
  82 + if (!showLog) {
  83 + return;
  84 + }
  85 + if(sipStack instanceof SIPTransactionStack) {
  86 + this.sipStack = (SIPTransactionStack)sipStack;
  87 + this.stackLogger = this.sipStack.getStackLogger();
  88 + }
  89 + }
  90 +
  91 +
  92 +}
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/conf/StackLoggerImpl.java 0 → 100644
  1 +package com.genersoft.iot.vmp.gb28181.conf;
  2 +
  3 +import gov.nist.core.StackLogger;
  4 +import org.slf4j.Logger;
  5 +import org.slf4j.LoggerFactory;
  6 +import org.springframework.stereotype.Component;
  7 +
  8 +import java.util.Properties;
  9 +
  10 +@Component
  11 +public class StackLoggerImpl implements StackLogger {
  12 +
  13 + private final static Logger logger = LoggerFactory.getLogger(StackLoggerImpl.class);
  14 +
  15 + @Override
  16 + public void logStackTrace() {
  17 +
  18 + }
  19 +
  20 + @Override
  21 + public void logStackTrace(int traceLevel) {
  22 + System.out.println("traceLevel: " + traceLevel);
  23 + }
  24 +
  25 + @Override
  26 + public int getLineCount() {
  27 + return 0;
  28 + }
  29 +
  30 + @Override
  31 + public void logException(Throwable ex) {
  32 +
  33 + }
  34 +
  35 + @Override
  36 + public void logDebug(String message) {
  37 +// logger.debug(message);
  38 + }
  39 +
  40 + @Override
  41 + public void logDebug(String message, Exception ex) {
  42 +// logger.debug(message);
  43 + }
  44 +
  45 + @Override
  46 + public void logTrace(String message) {
  47 + logger.trace(message);
  48 + }
  49 +
  50 + @Override
  51 + public void logFatalError(String message) {
  52 +// logger.error(message);
  53 + }
  54 +
  55 + @Override
  56 + public void logError(String message) {
  57 +// logger.error(message);
  58 + }
  59 +
  60 + @Override
  61 + public boolean isLoggingEnabled() {
  62 + return true;
  63 + }
  64 +
  65 + @Override
  66 + public boolean isLoggingEnabled(int logLevel) {
  67 + return true;
  68 + }
  69 +
  70 + @Override
  71 + public void logError(String message, Exception ex) {
  72 +// logger.error(message);
  73 + }
  74 +
  75 + @Override
  76 + public void logWarning(String message) {
  77 + logger.warn(message);
  78 + }
  79 +
  80 + @Override
  81 + public void logInfo(String message) {
  82 + logger.info(message);
  83 + }
  84 +
  85 + @Override
  86 + public void disableLogging() {
  87 +
  88 + }
  89 +
  90 + @Override
  91 + public void enableLogging() {
  92 +
  93 + }
  94 +
  95 + @Override
  96 + public void setBuildTimeStamp(String buildTimeStamp) {
  97 +
  98 + }
  99 +
  100 + @Override
  101 + public void setStackProperties(Properties stackProperties) {
  102 +
  103 + }
  104 +
  105 + @Override
  106 + public String getLoggerName() {
  107 + return null;
  108 + }
  109 +}
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
... ... @@ -105,7 +105,7 @@ public class SIPSender {
105 105 }
106 106 }
107 107 } finally {
108   - logger.info("[SEND]:SUCCESS:{}", message);
  108 +// logger.info("[SEND]:SUCCESS:{}", message);
109 109 }
110 110 }
111 111  
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java
... ... @@ -67,8 +67,7 @@ public class MessageRequestProcessor extends SIPRequestProcessorParent implement
67 67 @Override
68 68 public void process(RequestEvent evt) {
69 69 SIPRequest sipRequest = (SIPRequest)evt.getRequest();
70   - logger.info("接收到消息:" + evt.getRequest());
71   - logger.debug("接收到消息:" + evt.getRequest());
  70 +// logger.info("接收到消息:" + evt.getRequest());
72 71 String deviceId = SipUtils.getUserIdFromFromHeader(evt.getRequest());
73 72 CallIdHeader callIdHeader = sipRequest.getCallIdHeader();
74 73 // 先从会话内查找
... ...
src/main/resources/logback-spring-local.xml
... ... @@ -2,16 +2,22 @@
2 2 <configuration debug="false">
3 3 <!--定义日志文件的存储地址 -->
4 4 <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
5   - <property name="LOG_HOME" value="logs/${spring.application.name}" />
  5 + <property name="LOG_HOME" value="logs" />
  6 +
  7 + <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"/>
  8 +
  9 + <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
  10 + <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
  11 + <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
6 12  
7   - <!--<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)" />-->
8 13 <!-- 控制台输出 -->
9 14 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
10 15 <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
11 16 <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
12   - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
  17 + <pattern>${log.pattern}</pattern>
  18 + <charset>UTF-8</charset>
13 19 </encoder>
14   - <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  20 + <filter class="ch.qos.logback.classic.filter.ThresholdFilter" >
15 21 <!--与ThresholdFilter的区别,允许onmatch-->
16 22 <!--设置日志级别 接收info级别的日志-->
17 23 <level>DEBUG</level>
... ... @@ -32,6 +38,7 @@
32 38 <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
33 39 <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
34 40 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
  41 + <charset>UTF-8</charset>
35 42 </encoder>
36 43 <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
37 44 <!--与ThresholdFilter的区别,允许onmatch-->
... ... @@ -53,32 +60,16 @@
53 60 <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
54 61 <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
55 62 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
  63 + <charset>UTF-8</charset>
56 64 </encoder>
57 65 <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
58 66 <!--设置日志级别,过滤掉info日志,只输入error日志-->
59 67 <level>WARN</level>
60   - <!-- <onMatch>ACCEPT</onMatch> &lt;!&ndash; 用过滤器,只接受ERROR级别的日志信息,其余全部过滤掉 &ndash;&gt;-->
61   - <!-- <onMismatch>DENY</onMismatch>-->
62 68 </filter>
63 69 </appender>
64 70  
65   - <!-- 生成 druid日志追加 -->
66   - <appender name="druidSqlRollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
67   - <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
68   - <!--历史日志文件输出的文件名 -->
69   - <FileNamePattern>${LOG_HOME}/druid-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
70   - <!--日志文件保留天数 -->
71   - <MaxHistory>30</MaxHistory>
72   - <maxFileSize>50MB</maxFileSize>
73   - </rollingPolicy>
74   - <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
75   - <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
76   - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
77   - </encoder>
78   - </appender>
79   -
80 71 <!-- 生成 SIP日志追加 -->
81   - <appender name="sipRollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
  72 + <appender name="SipRollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
82 73 <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
83 74 <!--历史日志文件输出的文件名 -->
84 75 <FileNamePattern>${LOG_HOME}/sip-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
... ... @@ -89,6 +80,7 @@
89 80 <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
90 81 <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
91 82 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
  83 + <charset>UTF-8</charset>
92 84 </encoder>
93 85 </appender>
94 86  
... ... @@ -98,20 +90,13 @@
98 90 <appender-ref ref="STDOUT" />
99 91 </root>
100 92  
101   - <logger name="wvp" level="debug" additivity="true">
  93 + <logger name="com.genersoft.iot.vmp" level="info" additivity="true">
102 94 <appender-ref ref="RollingFileError"/>
103 95 <appender-ref ref="RollingFile"/>
104 96 </logger>
105 97  
106   - <logger name="GB28181_SIP" level="debug" additivity="true">
107   - <appender-ref ref="RollingFileError"/>
108   - <appender-ref ref="sipRollingFile"/>
  98 + <logger name="com.genersoft.iot.vmp.gb28181.conf.StackLoggerImpl" level="info" additivity="true">
  99 + <appender-ref ref="SipRollingFile" />
109 100 </logger>
110 101  
111   - <!--记录druid-sql的记录-->
112   - <logger name="com.genersoft.iot.vmp.storager.dao" level="info" additivity="true">
113   - <!--AppenderRef ref="Console"/-->
114   - <appender-ref ref="RollingFileError"/>
115   - <appender-ref ref="druidSqlRollingFile"/>
116   - </logger>
117 102 </configuration>
118 103 \ No newline at end of file
... ...