`
gtgt1988
  • 浏览: 114241 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

一个日志管理设计类

 
阅读更多

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);
	}	
		
}
















 
分享到:
评论
1 楼 kylewebgame 2012-11-02  
不错啊,做一个线程定时保存,不知道记录后如何做查询呢?或者怎样查询一个用户的某段时间某个操作呢

相关推荐

    日志管理系统mysql数据库设计

    该系统应用于一个大型企业的日志管理,包括日志记录、日志类型管理和日志与类型的关联关系管理。 场景: 该企业拥有多个业务系统,每天会产生大量的日志数据。由于日志数据量庞大,人工处理和管理这些数据非常困难...

    基于面向对象系统日志管理模块的设计与实现.pdf

    在本文档描述的系统中,日志管理模块采用了【面向对象】设计,主要分为三个关键类:日志管理(Log Manager)、日志队列(Log Queue)和日志线程(Log Thread)。日志管理类使用了【单例模式】,确保在整个系统中只有...

    基于Java web的工作日志管理系统文档 .doc

    综上所述,基于Java Web的工作日志管理系统是一个综合性的解决方案,它利用先进的Web技术和设计理念,以满足现代企业的信息管理需求。通过详尽的需求分析、精心的设计和开发,系统将为用户提供高效、安全的工作日志...

    操作日志系统设计.zip

    常见的方法有集中式日志管理和分布式日志收集,如使用Logstash、Fluentd等工具,将日志实时传输到中央存储(如Elasticsearch)。这样可以实现日志的统一管理和查询。 再者,日志存储是关键。由于日志数据量可能非常...

    C++高效日志类(库)

    前段时间在做毕业设计需要有一个功能模块是写日志,为了配合高性能服务器不拖延服务器的效率所以必须要写出一个十分高效确不太占用系统资源的日志类。 经过参考前辈们写的资料加上自己不断地研究改进,现在完成了一...

    自写的一个C/C++程序的日志管理类

    在C++中,设计一个日志管理类通常包括以下几个核心功能: 1. **日志级别控制**:提供枚举或常量来定义不同级别的日志,使得用户可以选择性地打印特定级别的日志。 2. **格式化输出**:允许用户自定义日志格式,如...

    C#,WPF日志管理 C#编程--项目常用日志保存

    在IT行业中,日志管理是软件开发中的一个重要环节,它对于调试、监控系统运行状态以及问题排查至关重要。本文将深入探讨C#编程环境下,结合Windows Presentation Foundation (WPF)技术如何实现日志管理,包括按照年...

    SSH的一个日志管理系统

    在这个名为"SSH的一个日志管理系统"的项目中,开发者使用这三个组件来实现一个简单但实用的日志记录和管理工具,非常适合初学者进行学习和实践。 首先,让我们深入了解每个框架的作用: 1. **Struts2**:Struts2是...

    Android统一管理Log日志

    一个Android统一管理的Log类,很方便的管理项目中的Log日志

    非常好用的日志管理器系统

    "非常好用的日志管理器系统"是一个专为中小型项目设计的工具,其核心在于提供了一种灵活的方式来记录和处理应用中的各类事件。下面我们将详细探讨这个日志管理系统的关键特性以及如何在实际开发中利用它。 首先,该...

    员工工作日志管理系统1.0源码.rar

    《员工工作日志管理系统1.0源码》是一款专为企业管理设计的应用,旨在高效地跟踪和管理员工的工作日志,从而提升工作效率,优化工作流程。该系统的核心功能包括员工日志记录、工作状态追踪、任务分配及反馈等,为...

    一个visual c++日志类源码

    在IT行业中,日志系统是软件开发不可或缺的一部分,它用于记录程序运行时的详细信息,帮助开发者追踪错误、调试程序以及优化系统...通过深入学习和理解日志类源码,开发者可以更好地适应和解决项目中的日志管理问题。

    Delphi中用多线程实现日志文件的读写与管理

    总的来说,通过合理运用Delphi的多线程技术和日志管理策略,我们可以创建一个高效、安全且易于维护的日志系统。这样的系统不仅可以帮助开发者追踪和调试问题,还可以为系统监控提供关键数据,确保软件系统的稳定运行...

    《系统运维和日志管理规定》-等级保护安全管理制度.pdf

    综上所述,《系统运维和日志管理规定》是确保互联网系统安全运行的重要指南,它通过严谨的制度设计,强化了日志在安全监控、故障排查和合规审计中的作用,从而提高了整个系统的安全性与稳定性。

    自用写日志类

    从标签“log”、“C++”和“类”来看,这个日志类是用C++实现的一个面向对象的日志管理系统。C++作为类的实现语言,为该日志类提供了足够的灵活性和强大的性能;“log”一词则直接指向了类的主要功能,即提供日志...

    log4qt 日志管理 log4qt 日志管理log4qt 日志管理log4qt 日志管理log4qt 日志管理log4qt 日志管理

    本文将深入探讨Log4Qt日志管理的核心概念、功能特性以及如何在实际项目中有效应用。 一、Log4Qt简介 Log4Qt是Qt应用程序的日志解决方案,它提供了多种级别的日志记录(如DEBUG、INFO、WARN、ERROR、FATAL等),以及...

    员工日志管理系统

    员工日志管理系统是企业日常运营中不可或缺的一部分,它主要用于记录、管理和审批员工的工作情况,从而提升工作效率,强化内部管理。本文将深入探讨该系统的关键功能和实现方式。 一、员工管理模块 员工管理模块是...

    手机日志系统的设计与实现

    总结,手机日志系统的设计与实现是一项涉及多个领域的任务,包括J2ME编程、数据库管理、网络通信以及数据分析。在有限的硬件资源和网络环境下,合理的设计和实现能够有效地利用日志数据,为移动应用的维护、优化和...

    .Net下几种日志管理方法

    在软件开发过程中,日志管理是非常重要的一个环节,它可以帮助开发者追踪程序运行过程中的各种状态以及错误信息,从而更有效地定位问题并进行修复。在.NET框架下,提供了多种日志管理的方法,主要包括:数据库日志、...

    C# 日志Log打印类,c++打印日志,C#

    压缩包中的"C# 日志Log打印类.txt"很可能是这个自定义日志类的源代码,通过阅读和学习,你可以深入理解日志管理类的设计思想和实现方式,从而提升自己的编程技巧。如果你需要进一步了解日志系统的具体实现,可以打开...

Global site tag (gtag.js) - Google Analytics