content: package com.genersoft.iot.vmp.gb28181.conf;
  
  import gov.nist.core.CommonLogger;
  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 = CommonLogger.getLogger(SIPTransactionStack.class);
          }
      }
  }
  