《基于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。