基于JAVA语言通过异步方式存储日志的方法.pdf

上传人:1520****312 文档编号:1036454 上传时间:2018-03-27 格式:PDF 页数:10 大小:1.28MB
返回 下载 相关 举报
摘要
申请专利号:

CN201110066095.3

申请日:

2011.03.18

公开号:

CN102331991A

公开日:

2012.01.25

当前法律状态:

驳回

有效性:

无权

法律详情:

发明专利申请公布后的驳回IPC(主分类):G06F 17/30申请公布日:20120125|||著录事项变更IPC(主分类):G06F 17/30变更事项:申请人变更前:北京神州数码思特奇信息技术股份有限公司变更后:北京思特奇信息技术股份有限公司变更事项:地址变更前:100085 北京市海淀区上地九街9号数码科技广场二层变更后:100085 北京市海淀区中关村南大街6号中电信息大厦16层|||实质审查的生效IPC(主分类):G06F 17/30申请日:20110318|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

北京神州数码思特奇信息技术股份有限公司

发明人:

魏鼎; 贾艳斌; 樊学峰

地址:

100085 北京市海淀区上地九街9号数码科技广场二层

优先权:

专利代理机构:

北京轻创知识产权代理有限公司 11212

代理人:

杨立

PDF下载: PDF下载
内容摘要

本发明涉及一种基于JAVA语言通过异步方式存储日志的方法,它包括以下步骤:步骤1:配置包含日志存储API的文件,并将该文件复制到JAVA工程的Lib目录中,并设置到JAVA工程类路径classpath中;步骤2:配置调用日志存储API的文件参数,所述参数包括数据库连接参数、日志队列大小参数、日志批量入库条数参数和日志文件目录参数;步骤3:加载步骤2中配置的所述参数,并初试化数据库连接、日志队列以及日志文件目录;步骤4:调用日志存储API,进行异步存储日志;步骤5:通过判断日志队列是否已满,将日志记录至日志队列,或将日志记录至日志文件中并更新日志文件目录,然后将日志存入数据库。本发明的有益效果是:本发明基于异步方式、批量的进行日志存储,可以有效提高系统的整体性能;本发明使用简单,可以提高开发效率。

权利要求书

1: 一种基于 JAVA 语言通过异步方式存储日志的方法, 其特征在于, 它包括以下步骤 : 步骤 1 : 配置包含日志存储 API 的文件, 并将该文件复制到 JAVA 工程的 Lib 目录中, 并 设置到 JAVA 工程类路径 classpath 中 ; 步骤 2 : 配置调用日志存储 API 的文件参数, 所述参数包括数据库连接参数、 日志队列 大小参数、 日志批量入库条数参数和日志文件目录参数 ; 步骤 3 : 加载步骤 2 中配置的所述参数, 实现数据库连接、 日志队列以及日志文件目录 的初试化 ; 步骤 4 : 调用日志存储 API, 进行异步存储日志 ; 步骤 5 : 通过判断日志队列是否已满, 将日志记录至日志队列, 或将日志记录至日志文 件中并更新日志文件目录, 然后将日志存入数据库。
2: 根据权利要求 1 所述的基于 JAVA 语言通过异步方式存储日志的方法, 其特征在于, 所述步骤 5 为判断日志队列是否已满, 未满则将日志直接记录至日志队列, 日志队列扫描 线程扫描日志队列, 将日志存入数据库 ; 日志队列已满, 则将日志记录到配置的目录中日志文件中, 文件扫描线程重复扫描日 志文件目录, 并将日志存入数据库, 日志存储后删掉日志文件。
3: 根据权利要求 1 所述的基于 JAVA 语言通过异步方式存储日志的方法, 其特征在于 : 所述步骤 5 中的将日志记录至日志队列或日志文件与日志存储异步进行。

说明书


基于 JAVA 语言通过异步方式存储日志的方法

    【技术领域】
     本发明涉及一种基于 JAVA 语言通过异步方式存储日志的方法。背景技术 目前系统中的产生的日志都需要被记录下来, 但是随着系统越来越大, 记录的日 志数量越来越多。大量同步记录日志的方式会产生很多 I/O 操作, 这对系统的整体性能造 成一定影响。
     发明内容 本发明针对以上不足提供一种基于 JAVA 语言通过异步方式存储日志的方法, 通 过一种异步的, 批量的方式来实现日志的存储, 有效提高系统对于日志存储的性能。
     本发明解决上述技术问题的技术方案如下 : 一种基于 JAVA 语言通过异步方式存 储日志的方法, 它包括以下步骤 : 步骤 1 : 配置包含日志存储 API 的文件, 并将该文件复制到 JAVA 工程的 Lib 目录中, 并 设置到 JAVA 工程类路径 classpath 中 ; 步骤 2 : 配置调用日志存储 API 的文件参数, 所述参数包括数据库连接参数、 日志队列 大小参数、 日志批量入库条数参数和日志文件目录参数 ; 步骤 3 : 加载步骤 2 中配置的文件参数, 并初试化数据库连接、 日志队列以及日志文件 目录 ; 步骤 4 : 调用日志存储 API, 进行异步存储日志 ; 步骤 5 : 通过判断日志队列是否已满, 将日志记录至日志队列, 或将日志存储日志文件 中并更新日志文件目录, 然后将日志存入数据库。
     进一步的, 步骤 5 为判断日志队列是否已满, 未满则将日志直接记录至日志队列, 日志队列扫描线程扫描日志队列, 将日志存入数据库 ; 日志队列已满, 则将日志记录到配置的目录中日志文件中, 文件扫描线程重复扫描日 志文件目录, 并将日志存入数据库, 日志存储后删掉日志文件。
     进一步的, 步骤 5 中的将日志记录至日志队列或日志文件与日志存储异步进行。
     本发明的有益效果是 : 本发明基于异步方式、 批量的进行日志存储, 可以有效提高 系统的整体性能 ; 在以后开发新的系统时, 可以直接集成本模块, 无需再开发日志模块 ; 本 发明使用简单, 直接调用记录日志的静态方法即可, 可以提高开发效率。
     附图说明
     图 1 为本发明流程图。 具体实施方式
     以下结合附图对本发明的原理和特征进行描述, 所举实例只用于解释本发明, 并非用于限定本发明的范围。
     如图 1 所示, 本发明包括以下步骤 : 步骤 1 : 配置包含日志存储 API 的文件, 即 log.jar 文件, 并将该文件导入 JAVA (Java, 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台的总称) 工程中, 即将本发明 Jar 文件 : log.jar 文件复制到 JAVA 工程的 Lib(类库) 目录中, 并设置 到 JAVA 工程类路径 classpath(让 Java 执行环境找到指定的 Java 程序 ( 也就是 .class 文件 ) 的变量) 中。
     log.jar 文件内核心处理程序片段如下 : 1. Scheduler.Java - 把阻塞队列里边的日志入库的线程 package com.sitech.i4a.audit.log; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import java.util.concurrent.ArrayBlockingQueue; import org.apache.log4j.Logger; import com.sitech.i4a.audit.log.env.LogENV; import com.sitech.i4a.audit.log.vo.LogVO; /** * 项目名称 : i4a-v2.0 *

Title: Scheduler

*

Description: 把阻塞队列里边的日志入库的线程

*

Copyright: Copyright (c) 2009

*

Company: SI-TECH

* @authorsi-tech * 创建时间 : Aug 15, 2009 8:14:42 PM * @version 1.0 * 修改人 : si-tech * 修改时间 : Aug 15, 2009 8:14:42 PM * 修改备注 : * */ public class Scheduler extends AbstractScheduler { private static Logger logger = Logger.getLogger(Scheduler.class); // 存放日志的队列。
     private final ArrayBlockingQueue queue; public Scheduler(ArrayBlockingQueue queue) { this.queue = queue; }/** * 执行存放。
     */ public void run() { while(true) { // 如果不够执行批量存储的数, 则等待 0.5 秒后再做判断。
     int size = queue.size(); if(size >= LogENV.EXCUT_BATCH_SIZE) { try { excute(); } catch (Exception e) { e.printStackTrace(); logger.error(" 日志批量入库出错 : "+e.getMessage()); continue; } }else { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); logger.error(" 日志批量入库线程异常 : " +e.getCause()); continue; } } } } protected void excute() throws Exception { Connection conn = getConnection(); PreparedStatement preState = null; Statement statment = null; try { preState = conn.prepareStatement(sql); statment = conn.createStatement(); // 则执行批量入库。
     for(int i=0; i < LogENV.EXCUT_BATCH_SIZE; i++) { LogVO log = queue.take(); excuteSQL(preState,statment,log); } preState.executeBatch(); conn.commit(); } catch (SQLException e) {logger.error(e.getMessage()); throw new Exception(e); } catch (InterruptedException e) { logger.error(e.getMessage()); throw new Exception(e); } finally { try { closeConn(conn,statment,preState); } catch (SQLException e) { logger.error(e.getMessage()); e.printStackTrace(); } } } LogWriter.Java - 提供写日志的公用方法 package com.sitech.i4a.audit.log; import java.util.concurrent.ArrayBlockingQueue; import com.sitech.i4a.audit.log.env.LogENV; import com.sitech.i4a.audit.log.vo.LogVO; import com.sitech.i4a.audit.log.buffer.*; /** * * 项目名称 : i4a-v2.0 *

Title: LogWriter

*

Description: 提供写日志的公用方法

*

Copyright: Copyright (c) 2009

*

Company: SI-TECH

* @authorsi-tech * 创建时间 : Aug 17, 2009 8:50:54 AM * @version 1.0 * 修改人 : si-tech * 修改时间 : Aug 17, 2009 8:50:54 AM * 修改备注 : * */ public class LogWriter { // 存放日志的队列。
     private static ArrayBlockingQueue queue =6} 2.102331991 A CN 102332004说明书5/7 页
     new ArrayBlockingQueue(LogENV.QUEUE_SIZE); // 执行队列中的日志入库的线程。 private static Scheduler scheduler = new Scheduler(queue); static{ scheduler.start(); }/** * 外部调用写日志的方法。
     */ public static void writeLog(LogVO log) { if(!queue.offer(log)) { FileManager.deal(log); } } } 步骤 2 : 配置文件参数 : 配置调用日志存储 API 的文件参数, 即配置 logenv.properties 文件中的内容 (即数据 库连接参数、 队列大小参数、 批量入库条数参数等参数) , 然后将文件放入 JAVA 工程类路径 (classpath) 。配置文件参数如下 : # 存放 logVO 阻塞队列的大小。
     LOG_QUEUE_SIZE=10 # 批量存储大小。
     SQL_BATCH_EXCUTE_SIZE=4 # 队列放满后, 临时文件路径。
     LOG_FILE_DIR=d:/working # 是否用容器配置的 JNDI 数据源 ,value = true Or false。
     USE_WEB_APPS_DATASOURCE=false # 数据源名称, ( 如果使用容器的 JNDI 数据源, 则配置该项 ) DATA_SOURCE_NAME=jdbc/logDB ##---- 如果 USE_WEB_APPS_DATASOURCE=false, 请对数据源参数进行配置。
     步骤 3 : 加载配置的 logenv.properties 文件参数, 并初试化数据库连接、 日志队 列以及日志文件目录 ; # 驱动名 DRIVER_CLASS=oracle.jdbc.driver.OracleDriver # 数据库连接 URL JDBC_URL=jdbc:oracle:thin:@172.XX.XX.117:1523:basdb # 数据库用户 DB_USER=XXX # 该用户密码USER_PASSWORD=XXX # 池最大连接数 MAX_POOL_SIZE=20 # 池最小的连接数。
     MIN_POOL_SIZE=2 # 池初始化连接数。
     INITIAL_POOL_SIZE=2 步骤 4 : 调用日志存储 API : Java Class 代码中需要引用以下 JAVA 类 : import com.sitech.i4a.audit.log.LogWriter; import com.sitech.i4a.audit.log.vo.LogVO; import com.sitech.i4a.audit.log.vo.LogVOFactory; Java Class 代码进行日志存储调用过程如下 : // 初始化 log 日志对象 LogVO log = LogVOFactory.createLogVO(); // 设置日志类型字段 , 字段数据可根据具体应用去定义 log.setLogType(); // 设置操作类型字段 , 字段数据可根据具体应用去定义 log.setOperateModule(); // 构造日志操作内容 StringBuffer contentSb = new StringBuffer(); contentSb.append("log content : "); contentSb.append("log content log content."); // 设置 log 日志对象操作内容属性 log.setOperateContent(contentSb.toString()); log.setOperateResult(); // 调用日志记录 API LogWriter.writeLog(log); // 调用操作完成 步骤 5 : 通过判断日志队列是否已满, 将日志记录至日志队列, 或将日志记录至日志文 件中并更新日志文件目录, 然后将日志存入数据库。
     本发明支持属性配置文件方式进行配置, 配置项包括数据库连接参数、 队列大小 参数、 批量入库条数参数、 日志文件存储目录等, 可以根据系统性能要求以及硬件资源配置 进行灵活调整。 JAVA 程序加载 logenv.properties 配置文件参数, 并完成数据库连接、 日志 队列、 文件目录的初试化。
     配 置 参 数 成 功 加 载 后, 可 以 使 用 本 发 明 提 供 的 存 储 API(application programming interface, 应用程序接口) 进行日志存储, 本发明提供简洁的存储 API 对 JAVA 开发者屏蔽具体的程序处理的流程, JAVA 开发者可以通过简单的程序语言调用 API, 完成 日志的异步存储。调用存储 API, 判断此时日志队列是否已满, 如果未满, 直接记录至日志队列, 扫描 日志队列进程进行数据的批量入库操作存储日志记录 ; 如果此时日志队列已满, 则将日志 记录到配置目录中的日志文件中, 文件扫描线程重复扫描文件队列, 并进行日志存储, 日志 存储后删掉日志文件。日志记录队列和文件与日志存储异步进行, 提高日志存储的效率和 性能。
     本发明支持 Oracle、 MysqL、 MsSql 等各版本数据库。
     本发明在将日志存储如数据库时采用了数据库连接技术, 在将日志存储入日志队 列或日志文件时采用了阻塞队列技术、 JAVA 线程技术以及文件读写等技术实现 JAVA 程序 中异步方式的日志存储, 解决同步日志存储性能瓶颈问题, 提高日志存储效率, 从而提高系 统整体性能。
     以上所述仅为本发明的较佳实施例, 并不用以限制本发明, 凡在本发明的精神和 原则之内, 所作的任何修改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。

基于JAVA语言通过异步方式存储日志的方法.pdf_第1页
第1页 / 共10页
基于JAVA语言通过异步方式存储日志的方法.pdf_第2页
第2页 / 共10页
基于JAVA语言通过异步方式存储日志的方法.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《基于JAVA语言通过异步方式存储日志的方法.pdf》由会员分享,可在线阅读,更多相关《基于JAVA语言通过异步方式存储日志的方法.pdf(10页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102331991A43申请公布日20120125CN102331991ACN102331991A21申请号201110066095322申请日20110318G06F17/3020060171申请人北京神州数码思特奇信息技术股份有限公司地址100085北京市海淀区上地九街9号数码科技广场二层72发明人魏鼎贾艳斌樊学峰74专利代理机构北京轻创知识产权代理有限公司11212代理人杨立54发明名称基于JAVA语言通过异步方式存储日志的方法57摘要本发明涉及一种基于JAVA语言通过异步方式存储日志的方法,它包括以下步骤步骤1配置包含日志存储API的文件,并将该文件复制到JAVA工程。

2、的LIB目录中,并设置到JAVA工程类路径CLASSPATH中;步骤2配置调用日志存储API的文件参数,所述参数包括数据库连接参数、日志队列大小参数、日志批量入库条数参数和日志文件目录参数;步骤3加载步骤2中配置的所述参数,并初试化数据库连接、日志队列以及日志文件目录;步骤4调用日志存储API,进行异步存储日志;步骤5通过判断日志队列是否已满,将日志记录至日志队列,或将日志记录至日志文件中并更新日志文件目录,然后将日志存入数据库。本发明的有益效果是本发明基于异步方式、批量的进行日志存储,可以有效提高系统的整体性能;本发明使用简单,可以提高开发效率。51INTCL19中华人民共和国国家知识产权局。

3、12发明专利申请权利要求书1页说明书7页附图1页CN102332004A1/1页21一种基于JAVA语言通过异步方式存储日志的方法,其特征在于,它包括以下步骤步骤1配置包含日志存储API的文件,并将该文件复制到JAVA工程的LIB目录中,并设置到JAVA工程类路径CLASSPATH中;步骤2配置调用日志存储API的文件参数,所述参数包括数据库连接参数、日志队列大小参数、日志批量入库条数参数和日志文件目录参数;步骤3加载步骤2中配置的所述参数,实现数据库连接、日志队列以及日志文件目录的初试化;步骤4调用日志存储API,进行异步存储日志;步骤5通过判断日志队列是否已满,将日志记录至日志队列,或将日。

4、志记录至日志文件中并更新日志文件目录,然后将日志存入数据库。2根据权利要求1所述的基于JAVA语言通过异步方式存储日志的方法,其特征在于,所述步骤5为判断日志队列是否已满,未满则将日志直接记录至日志队列,日志队列扫描线程扫描日志队列,将日志存入数据库;日志队列已满,则将日志记录到配置的目录中日志文件中,文件扫描线程重复扫描日志文件目录,并将日志存入数据库,日志存储后删掉日志文件。3根据权利要求1所述的基于JAVA语言通过异步方式存储日志的方法,其特征在于所述步骤5中的将日志记录至日志队列或日志文件与日志存储异步进行。权利要求书CN102331991ACN102332004A1/7页3基于JAV。

5、A语言通过异步方式存储日志的方法技术领域0001本发明涉及一种基于JAVA语言通过异步方式存储日志的方法。背景技术0002目前系统中的产生的日志都需要被记录下来,但是随着系统越来越大,记录的日志数量越来越多。大量同步记录日志的方式会产生很多I/O操作,这对系统的整体性能造成一定影响。发明内容0003本发明针对以上不足提供一种基于JAVA语言通过异步方式存储日志的方法,通过一种异步的,批量的方式来实现日志的存储,有效提高系统对于日志存储的性能。0004本发明解决上述技术问题的技术方案如下一种基于JAVA语言通过异步方式存储日志的方法,它包括以下步骤步骤1配置包含日志存储API的文件,并将该文件复。

6、制到JAVA工程的LIB目录中,并设置到JAVA工程类路径CLASSPATH中;步骤2配置调用日志存储API的文件参数,所述参数包括数据库连接参数、日志队列大小参数、日志批量入库条数参数和日志文件目录参数;步骤3加载步骤2中配置的文件参数,并初试化数据库连接、日志队列以及日志文件目录;步骤4调用日志存储API,进行异步存储日志;步骤5通过判断日志队列是否已满,将日志记录至日志队列,或将日志存储日志文件中并更新日志文件目录,然后将日志存入数据库。0005进一步的,步骤5为判断日志队列是否已满,未满则将日志直接记录至日志队列,日志队列扫描线程扫描日志队列,将日志存入数据库;日志队列已满,则将日志记。

7、录到配置的目录中日志文件中,文件扫描线程重复扫描日志文件目录,并将日志存入数据库,日志存储后删掉日志文件。0006进一步的,步骤5中的将日志记录至日志队列或日志文件与日志存储异步进行。0007本发明的有益效果是本发明基于异步方式、批量的进行日志存储,可以有效提高系统的整体性能;在以后开发新的系统时,可以直接集成本模块,无需再开发日志模块;本发明使用简单,直接调用记录日志的静态方法即可,可以提高开发效率。附图说明0008图1为本发明流程图。具体实施方式0009以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并说明书CN102331991ACN102332004A2/7页4非用。

8、于限定本发明的范围。0010如图1所示,本发明包括以下步骤步骤1配置包含日志存储API的文件,即LOGJAR文件,并将该文件导入JAVA(JAVA,是由SUNMICROSYSTEMS公司于1995年5月推出的JAVA程序设计语言和JAVA平台的总称)工程中,即将本发明JAR文件LOGJAR文件复制到JAVA工程的LIB(类库)目录中,并设置到JAVA工程类路径CLASSPATH(让JAVA执行环境找到指定的JAVA程序也就是CLASS文件的变量)中。0011LOGJAR文件内核心处理程序片段如下1SCHEDULERJAVA把阻塞队列里边的日志入库的线程PACKAGECOMSITECHI4AAU。

9、DITLOGIMPORTJAVASQLCONNECTIONIMPORTJAVASQLPREPAREDSTATEMENTIMPORTJAVASQLSQLEXCEPTIONIMPORTJAVASQLSTATEMENTIMPORTJAVAUTILCONCURRENTARRAYBLOCKINGQUEUEIMPORTORGAPACHELOG4JLOGGERIMPORTCOMSITECHI4AAUDITLOGENVLOGENVIMPORTCOMSITECHI4AAUDITLOGVOLOGVO/项目名称I4AV20TITLESCHEDULERDESCRIPTION把阻塞队列里边的日志入库的线程COPYRIG。

10、HTCOPYRIGHTC2009COMPANYSITECHAUTHORSITECH创建时间AUG15,200981442PMVERSION10修改人SITECH修改时间AUG15,200981442PM修改备注/PUBLICCLASSSCHEDULEREXTENDSABSTRACTSCHEDULERPRIVATESTATICLOGGERLOGGERLOGGERGETLOGGERSCHEDULERCLASS/存放日志的队列。0012PRIVATEFINALARRAYBLOCKINGQUEUEQUEUEPUBLICSCHEDULERARRAYBLOCKINGQUEUEQUEUETHISQUEUEQ。

11、UEUE说明书CN102331991ACN102332004A3/7页5/执行存放。0013/PUBLICVOIDRUNWHILETRUE/如果不够执行批量存储的数,则等待05秒后再做判断。0014INTSIZEQUEUESIZEIFSIZELOGENVEXCUT_BATCH_SIZETRYEXCUTECATCHEXCEPTIONEEPRINTSTACKTRACELOGGERERROR“日志批量入库出错“EGETMESSAGECONTINUEELSETRYTHREADSLEEP500CATCHINTERRUPTEDEXCEPTIONEEPRINTSTACKTRACELOGGERERROR“日志。

12、批量入库线程异常“EGETCAUSECONTINUEPROTECTEDVOIDEXCUTETHROWSEXCEPTIONCONNECTIONCONNGETCONNECTIONPREPAREDSTATEMENTPRESTATENULLSTATEMENTSTATMENTNULLTRYPRESTATECONNPREPARESTATEMENTSQLSTATMENTCONNCREATESTATEMENT/则执行批量入库。0015FORINTI0ITITLELOGWRITERDESCRIPTION提供写日志的公用方法COPYRIGHTCOPYRIGHTC2009COMPANYSITECHAUTHORSIT。

13、ECH创建时间AUG17,200985054AMVERSION10修改人SITECH修改时间AUG17,200985054AM修改备注/PUBLICCLASSLOGWRITER/存放日志的队列。0016PRIVATESTATICARRAYBLOCKINGQUEUEQUEUE说明书CN102331991ACN102332004A5/7页7NEWARRAYBLOCKINGQUEUELOGENVQUEUE_SIZE/执行队列中的日志入库的线程。0017PRIVATESTATICSCHEDULERSCHEDULERNEWSCHEDULERQUEUESTATICSCHEDULERSTART/外部调用写日。

14、志的方法。0018/PUBLICSTATICVOIDWRITELOGLOGVOLOGIFQUEUEOFFERLOGFILEMANAGERDEALLOG步骤2配置文件参数配置调用日志存储API的文件参数,即配置LOGENVPROPERTIES文件中的内容(即数据库连接参数、队列大小参数、批量入库条数参数等参数),然后将文件放入JAVA工程类路径(CLASSPATH)。配置文件参数如下存放LOGVO阻塞队列的大小。0019LOG_QUEUE_SIZE10批量存储大小。0020SQL_BATCH_EXCUTE_SIZE4队列放满后,临时文件路径。0021LOG_FILE_DIRD/WORKING是否。

15、用容器配置的JNDI数据源,VALUETRUEORFALSE。0022USE_WEB_APPS_DATASOURCEFALSE数据源名称,如果使用容器的JNDI数据源,则配置该项DATA_SOURCE_NAMEJDBC/LOGDB如果USE_WEB_APPS_DATASOURCEFALSE,请对数据源参数进行配置。0023步骤3加载配置的LOGENVPROPERTIES文件参数,并初试化数据库连接、日志队列以及日志文件目录;驱动名DRIVER_CLASSORACLEJDBCDRIVERORACLEDRIVER数据库连接URLJDBC_URLJDBCORACLETHIN172XXXX117152。

16、3BASDB数据库用户DB_USERXXX该用户密码说明书CN102331991ACN102332004A6/7页8USER_PASSWORDXXX池最大连接数MAX_POOL_SIZE20池最小的连接数。0024MIN_POOL_SIZE2池初始化连接数。0025INITIAL_POOL_SIZE2步骤4调用日志存储APIJAVACLASS代码中需要引用以下JAVA类IMPORTCOMSITECHI4AAUDITLOGLOGWRITERIMPORTCOMSITECHI4AAUDITLOGVOLOGVOIMPORTCOMSITECHI4AAUDITLOGVOLOGVOFACTORYJAVACL。

17、ASS代码进行日志存储调用过程如下/初始化LOG日志对象LOGVOLOGLOGVOFACTORYCREATELOGVO/设置日志类型字段,字段数据可根据具体应用去定义LOGSETLOGTYPE/设置操作类型字段,字段数据可根据具体应用去定义LOGSETOPERATEMODULE/构造日志操作内容STRINGBUFFERCONTENTSBNEWSTRINGBUFFERCONTENTSBAPPEND“LOGCONTENT“CONTENTSBAPPEND“LOGCONTENTLOGCONTENT“/设置LOG日志对象操作内容属性LOGSETOPERATECONTENTCONTENTSBTOSTRIN。

18、GLOGSETOPERATERESULT/调用日志记录APILOGWRITERWRITELOGLOG/调用操作完成步骤5通过判断日志队列是否已满,将日志记录至日志队列,或将日志记录至日志文件中并更新日志文件目录,然后将日志存入数据库。0026本发明支持属性配置文件方式进行配置,配置项包括数据库连接参数、队列大小参数、批量入库条数参数、日志文件存储目录等,可以根据系统性能要求以及硬件资源配置进行灵活调整。JAVA程序加载LOGENVPROPERTIES配置文件参数,并完成数据库连接、日志队列、文件目录的初试化。0027配置参数成功加载后,可以使用本发明提供的存储API(APPLICATIONPR。

19、OGRAMMINGINTERFACE,应用程序接口)进行日志存储,本发明提供简洁的存储API对JAVA开发者屏蔽具体的程序处理的流程,JAVA开发者可以通过简单的程序语言调用API,完成日志的异步存储。说明书CN102331991ACN102332004A7/7页90028调用存储API,判断此时日志队列是否已满,如果未满,直接记录至日志队列,扫描日志队列进程进行数据的批量入库操作存储日志记录;如果此时日志队列已满,则将日志记录到配置目录中的日志文件中,文件扫描线程重复扫描文件队列,并进行日志存储,日志存储后删掉日志文件。日志记录队列和文件与日志存储异步进行,提高日志存储的效率和性能。0029本发明支持ORACLE、MYSQL、MSSQL等各版本数据库。0030本发明在将日志存储如数据库时采用了数据库连接技术,在将日志存储入日志队列或日志文件时采用了阻塞队列技术、JAVA线程技术以及文件读写等技术实现JAVA程序中异步方式的日志存储,解决同步日志存储性能瓶颈问题,提高日志存储效率,从而提高系统整体性能。0031以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。说明书CN102331991ACN102332004A1/1页10图1说明书附图CN102331991A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1