⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memorypersistencelogobserver.java

📁 监控整个SP系统的SMS信息通道的发送情况并且生成日志。 支持权限判断。
💻 JAVA
字号:
package com.infobank.superchannel.observer.implementation;import java.io.ByteArrayOutputStream;import java.io.PrintStream;import java.util.LinkedList;import java.util.List;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.atomic.AtomicReference;import com.infobank.superchannel.observer.ChannelStatusObserver;import com.infobank.superchannel.observer.LogObserver;import com.infobank.superchannel.pojo.ChannelInfo;import com.infobank.superchannel.pojo.GenericLog;import com.infobank.superchannel.pojo.TextMessage;import com.infobank.superchannel.pojo.TextMessageLog;import com.infobank.superchannel.daemon.GenericDaemon;import com.infobank.superchannel.daemon.databasecache.DatabaseCacheDaemon;import com.infobank.superchannel.daemon.messagelauncher.MessageLauncherDaemon;import com.infobank.superchannel.util.DaemonConfiguration;/** * @author Xiaoguang Sun * @version 类说明: MemoryPersistenceLog观察者 */public class MemoryPersistenceLogObserver implements LogObserver {  private static int maximumLogSize=100;   private List<GenericLog> genericLog=new LinkedList<GenericLog>();  private Object genericLogMutex=new Object();    private static String daemonType=null;    public static void init(GenericDaemon daemon){      if(daemon instanceof DatabaseCacheDaemon){        daemonType="DatabaseCache";      }      else{        if(daemon instanceof MessageLauncherDaemon){          daemonType="MessageLauncher";        }        else          throw new RuntimeException("invalid daemon type");      }      DaemonConfiguration config=DaemonConfiguration.getInstance();      StringBuilder sb=new StringBuilder();      sb.append("/daemon[@type='");      sb.append(daemonType);      sb.append("']/observer[@type='LogObserver']/");      String basePath=sb.toString();      sb=new StringBuilder();      sb.append(basePath);      sb.append("capacity[@persistence='Memory']/genericLog");      maximumLogSize=config.getInt(sb.toString());    }  private void checkListSize(List list,int maxsize){    int listSize=list.size();    if(listSize>=maxsize){      list.remove(0);    }  }    /**   *  取得自上次调用此方发以后新增的所有日志信息   * @return 自上次调用此方发以后新增的所有日志信息   */  public List<GenericLog> getGenericLog(){    List<GenericLog> log=null;    synchronized(genericLogMutex){      log=genericLog;      genericLog=new LinkedList<GenericLog>();    }    return log;  }    /**   * helper method for logging methods   * @param log log information   * @param level log level   */  private void log(String log,GenericLog.LogLevel level){    synchronized(genericLogMutex){      checkListSize(genericLog,maximumLogSize);      genericLog.add(new GenericLog(log,level));    }  }  /**   * helper method for logging exception methods   * @param ex exception   * @param level log level   */  private void log(Exception ex,GenericLog.LogLevel level){    synchronized(genericLogMutex){      checkListSize(genericLog,maximumLogSize);      ByteArrayOutputStream os=new ByteArrayOutputStream();      ex.printStackTrace(new PrintStream(os));      genericLog.add(new GenericLog(os.toString(),level));    }  }  /**   *  记载调试日志信息   * @param log 调试日志信息   */  public void debug(String log) {    log(log,GenericLog.LogLevel.DEBUG);  }  /**   *  记载错误信息   * @param log 错误信息   */  public void error(String log) {    log(log,GenericLog.LogLevel.ERROR);  }  /**   *  记载致命错误信息   * @param log 致命错误信息   */  public void fatal(String log) {    log(log,GenericLog.LogLevel.FATAL);  }  /**   *  记载一般日志信息   * @param log 一般日志信息   */  public void info(String log) {    log(log,GenericLog.LogLevel.INFO);  }  public void warn(String log) {    log(log,GenericLog.LogLevel.WARN);  }  public void debug(Exception ex) {    log(ex,GenericLog.LogLevel.DEBUG);  }  public void error(Exception ex) {    log(ex,GenericLog.LogLevel.ERROR);  }  public void fatal(Exception ex) {    log(ex,GenericLog.LogLevel.FATAL);  }  public void info(Exception ex) {    log(ex,GenericLog.LogLevel.INFO);  }  public void warn(Exception ex) {    log(ex,GenericLog.LogLevel.WARN);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -