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

📄 mylogger.java

📁 采用JAVA开发
💻 JAVA
字号:
package com.gctech.sms.platform;

import com.gctech.sms.msg.MTInfo;
import java.util.Collection;
import java.util.List;
import org.apache.log4j.Logger;
import java.util.Vector;
import com.gctech.sms.dao.MTDao;
import com.gctech.sms.util.MsgIdConverter;
import com.gctech.sms.msg.MOInfo;
import com.gctech.sms.dao.MODao;
import com.gctech.sms.core.IsReply;
import com.gctech.sms.util.ThreadManager;
import EDU.oswego.cs.dl.util.concurrent.Channel;
import EDU.oswego.cs.dl.util.concurrent.BoundedLinkedQueue;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: gctech</p>
 * @author 王红宝
 * @version $Id: MyLogger.java,v 1.1 2004/05/11 02:13:23 wanghb Exp $
 */

public class MyLogger //implements Runnable{
{

  Channel allData;
  private MyLogger() {
    //初试化通道,启动消费者
    allData = new BoundedLinkedQueue(10000);
    Consumer consumer = new Consumer(allData);
    Thread t =
        new Thread(consumer, "SMS_LOGGER");
    t.setPriority(Thread.MIN_PRIORITY);
    t.start();
  }
  private static MyLogger singleton;
  public static MyLogger getInstance(){
    if ( singleton == null )
      singleton = new MyLogger();
    return singleton;
  }

  public void logMo(final MOInfo info){
    try {
      allData.put(info);
    }
    catch (InterruptedException ex) {
      logger.error(ex, ex);
    }
  }
  /**
   * 增加MT到写队列。
   * */
  public void logMt(final MTInfo info){
    try {
      allData.put(info);
    }
    catch (InterruptedException ex) {
      logger.error(ex, ex);
    }
  }
//  List mtCol;
//  List moCol;
/*  void writeMt(){
    while ( mtCol.size() >0 ){
      //读取MT,写到数据库
      MTInfo info = (MTInfo)mtCol.remove(0);
      //写到数据库
      if ( info.nStatus == 0 ){
        //成功日志
        info.MsgID2 = MsgIdConverter.convert(info.MsgID2.getBytes()).toString();
        MTDao.addSuc(info);
      }else{
        //失败日志
        MTDao.addFal(info);
      }
    }
  }
  void writeMo(){
    while ( moCol.size() >0 ){
      //读取MT,写到数据库
      MOInfo info = (MOInfo)moCol.remove(0);
      //写到数据库
      MODao.add(info);
      //如果是状态报告
      if ( info.IsReply == IsReply.IS_REPLY.getValue() ){
        //更新对应MT.
        String msgId = MsgIdConverter.convert(info.linkMtMsgId.getBytes()).toString();
        int rt = MTDao.updateMt(msgId, info.status);
        if ( rt <= 0 ){
          logger.warn("msgId:" +msgId +" 's mt 没有找到,消息ID的长度是:"+info.linkMtMsgId.length());
        }
      }
    }
  }*/
  /*public void run(){
    while ( true ){
      writeMt();
      writeMo();
      //没有数据可写,休眠
      try {
        Thread.sleep(5000);
        logger.debug("waiting data write to db!");
      }
      catch (InterruptedException ex) {
        logger.error(ex, ex);
      }
    }
  }*/
  static final Logger logger = Logger.getLogger(MyLogger.class);
  class Consumer implements Runnable{
    Channel chan;
    Consumer(Channel chan){
      this.chan = chan;
    }
    public void run(){
      try {
       for(;;) { consume(chan.take()); }
     }
     catch (InterruptedException ex) {
       ex.printStackTrace();
     }
    }
    void writeMt(MTInfo info){
      //写到数据库
      if (info.nStatus == 0) {
        //成功日志
        info.MsgID2 = MsgIdConverter.convert(info.MsgID2.getBytes()).
            toString();
        MTDao.addSuc(info);
      }
      else {
        //失败日志
        MTDao.addFal(info);
      }
    }
    void writeMo(MOInfo info){
      //写到数据库
      MODao.add(info);
      //如果是状态报告
      if (info.IsReply == IsReply.IS_REPLY.getValue()) {
        //更新对应MT.
        String msgId = MsgIdConverter.convert(info.linkMtMsgId.getBytes()).
            toString();
        int rt = MTDao.updateMt(msgId, info.status);
        if (rt <= 0) {
          logger.warn("msgId:" + msgId + " 's mt 没有找到,消息ID的长度是:" +
                      info.linkMtMsgId.length());
        }
      }
    }
    void consume(Object obj){
      if ( obj instanceof MTInfo ){
        MTInfo info = (MTInfo)obj;
        writeMt(info);
      }else if( obj instanceof MOInfo ){
        MOInfo info = (MOInfo)obj;
        writeMo(info);
      }
    }
  }
}


⌨️ 快捷键说明

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