📄 mylogger.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 + -