一个日志管理设计类

public class LogDataQueue {
	private static Queue<Object> logDataQueue = null;
	
	public static Queue<Object> getLogDataQueue(){
		if(logDataQueue == null){
			logDataQueue = new    ConcurrentLinkedQueue<Object>();//单例模式
		}
		return logDataQueue;
	}
	
}




日志保存接口
public interface ILogPersistance {
	public boolean saveLog(Object obj);
}



public class LogPersistanceService implements ILogPersistance {
	private static final Logger log = Logger.getLogger(LogPersistanceService.class);
	@Override
	public boolean saveLog(Object obj) {
    
		LogToDBProcessor logToDBProcessor = DaoServiceProvider.getLogToDBProcessor();//配置文件中配置BEAN,然后获取bean
		log.info("收到待保存的日志信息,obj:"+obj);
		logToDBProcessor.saveLog(obj);
		return true;
	}

}




// 保存日志的线程
public class LogToDBProcessor implements Runnable{
	private static final Logger log = Logger.getLogger(LogToDBProcessor.class);
	private Queue<Object> queue = LogDataQueue.getLogDataQueue();
	
	public synchronized void saveLog(Object log)
	{              //日志入队列中
			LogDataQueue.getLogDataQueue().add(log);
	}
	
	public void run() {
		while(true){
			try {
				Thread.sleep(10000);
				this.process();
			} catch (Exception e) {
				log.info("日志入库异常:"+e.getMessage());
			}
		}		
	}
	
	private void process(){
		int currentSize = queue.size();
		if(currentSize!=0)
		{
			List<Object> list = new ArrayList<Object>();
			if(currentSize > 100){			
				for(int i=0; i<100; i++){
//从队列中	拿出队列的头		
					list.add(queue.poll());
				}
			}else {
				for (int i = 0; i < queue.size(); i++) {
  
					list.add(queue.poll());
				}
			}
			this.toDb(list);
		}
	}
//入库操作	
	private void toDb(List<Object> list){
//封装数据的操作
		GenericPersistenceService genericPersistenceService = (GenericPersistenceService)ApplicationContextProvider.getBean("genericPersistenceService");
		log.info("日志入库:list.size="+list.size());
		for(Object o : list){
//如果是登录操作就入库
			if(o instanceof Logininfo && "1".equals(((Logininfo)o).getFlag())){
				genericPersistenceService.update(o);
			}else{
				genericPersistenceService.save(o);
			}
		}
		//genericPersistenceService.saveBatch(list);
	}	
		
}
















 

你可能感兴趣的:(管理)