Commit d79eec25b06b26491ae07f6f8dc02ba18eb77919
1 parent
b010e63d
优化日志打印,去除数据库打印,优化控制台打印效果
Showing
8 changed files
with
227 additions
and
61 deletions
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
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> <!– 用过滤器,只接受ERROR级别的日志信息,其余全部过滤掉 –>--> | |
| 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 | ... | ... |