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);
}
}
分享到:
相关推荐
该系统应用于一个大型企业的日志管理,包括日志记录、日志类型管理和日志与类型的关联关系管理。 场景: 该企业拥有多个业务系统,每天会产生大量的日志数据。由于日志数据量庞大,人工处理和管理这些数据非常困难...
一个Android统一管理的Log类,很方便的管理项目中的Log日志
前段时间在做毕业设计需要有一个功能模块是写日志,为了配合高性能服务器不拖延服务器的效率所以必须要写出一个十分高效确不太占用系统资源的日志类。 经过参考前辈们写的资料加上自己不断地研究改进,现在完成了一...
4 日志管理模块系统实现 15 4.1各文件功能介绍及详解 15 4.1.1系统文件结构 15 4.1.2配置文件 15 4.2系统界面及业务 18 4.2.1系统界面设计 18 4.2.2日志管理模块 20 4.2.3查看事务 24 总结与展望 28 致谢 29 参考...
面向分布式日志管理系统开发的日志管理系统 特点: 走消息队列rabbitmq 分布式项目管理 接入简单 统一管理日志,方便排查问题 不用一台一台服务器翻bug mongodb 管理 定时清理过期的日志 日志分析 邮件报警 ...
用三层结构进行设计,几个单独的类更方便维护系统,对时间的输入有下载专门的控件进行选择并监测其有效性.
“书籍是人类知识的...旨在实现对现有的图书管理工作中遇到的各种情况和大量数据进行数据库存储调用的基础上,设计并完成对其各种图书的分类、查询和管理,在深入研究的过程中,尽可能实现各类方便友好的操作界面 。
管理员登陆后,主要模块包括首页、个人中心、员工管理、员工请假管理、销假申请管理、工作日志管理、员工工资管理、员工任务管理、任务汇报管理、设备信息管理、设备借用管理、设备归还管理、设备报修管理、维修入库...
3.5.3 系统日志管理的顺序图和协作图 30 3.5.4 系统数据备份的顺序图和协作图 31 3.5.5 系统数据恢复的顺序图和协作图 32 3.5.6 存量查询的顺序图和协作图 33 3.5.7 仓库盘点的顺序图和协作图 34 3.5.8 仓库补货的...
包含了登陆注册、用户管理、部门管理、文件管理、权限管理、日志管理、个人中心、数据字典和代码生成这九个功能模块 系统采用了基于角色的访问控制,角色和菜单关联,一个角色可以配置多个菜单权限;然后再将用户和...
C# + SQL Server 本系统包括两类用户:学生、管理员。管理员可以通过系统来添加管理员信息、修改管理员信息、添加学生信息、修改学生信息;开设课程、查询课程、录入成绩、统计成绩 管理系统是一种通过计算机技术...
(3)C# 类库程序项目TravelLib:其中TravelData类用于实现数据访问接口,其余类型则用于实现旅行社管理系统的基本业务逻辑。 2、程序中主要的类型及其功能说明请参看《C#面向对象程序设计》教材内容。 3、系统...
Android离线系统日志工具是一种可以在设备离线状态下收集和管理系统日志信息的工具。这些工具通常设计用于帮助开发人员在设备无法连接到互联网或调试工具的情况下,仍然能够获取关于设备状态和应用程序行为的日志...
管理员登陆后,主要模块包括首页、个人中心、员工管理、员工请假管理、销假申请管理、工作日志管理、员工工资管理、员工任务管理、任务汇报管理、设备信息管理、设备借用管理、设备归还管理、设备报修管理、维修入库...
采用用例图描述的图书管理主要包括三类用户:读者、图书管理员、系统管理员。其中,读者是多个,图书管理员是几个,系统管理员是一个。对于系统,读者可以查询自己的借阅情况、分门别类的查询图书和在规定期限内续借...
开发软件:Eclipse或Idea ... (2) 系统管理员:主要通过后台来管理本系统所有的功能,具有最高权限,系统管理模块可以管理所有用户信息,查询系统角色信息,管理系统菜单资源权限记录,查看系统日志;可以对垃圾分类信
## 开发软件:Eclipse或Idea 数据库:mysql ... (2) 系统管理员:主要通过后台来管理本系统所有的功能,具有最高权限,系统管理模块可以管理所有用户信息,查询系统角色信息,管理系统菜单资源权限记录,查看系统日志
课程设计报告 ( 2021 -- 2021 年度第 2 学期) 名 称: 数据库应用课程设计 题 目: 博客管理系统 院 系: 计算机科学与技术学院 班 级: 计算1503班 学 号: 学生姓名: 指导教师: 设计周数: 一周 成 绩: 日期:...
JAVA毕业设计ssm jspm九宫格日志网站项目是一个基于SSM(Spring+SpringMVC+MyBatis)框架和JSPM(JQuery+SemanticUI)技术的日志网站项目。项目致力于为用户提供一个便捷、美观的日志发布与管理平台。该项目的主要...