一种自适应日志文件高效输出处理方法 【技术领域】
本发明涉及一种日志输出方法,尤其涉及一种自适应日志文件高效输出处理方法。
背景技术
在软件系统中,需要日志功能来记录软件系统运行过程中所发生的事件。目前的一些日志模块有Log4cpp、Log4j、Log4cxx等,这些模块提供了统一的日志输入接口,可以将日志文件输出到本地文件中。
日志输出到文件中时首先打开日志文件,然后将日志写入文件,最后关闭日志文件。若单位时间内输出的日志数量较多,则打开和关闭日志文件操作就占用较多的资源,尤其是在日志文件较大时,会影响日志文件写入的效率。
【发明内容】
本发明的目的就是为了克服上述现有技术存在的缺陷,提供一种自适应日志文件高效输出处理方法。
本发明的目的可以通过以下技术方案来实现:
一种自适应日志文件高效输出处理方法,其特征在于,该方法包括以下步骤:
1)定义日志输出时延;
2)定义平均日志输出时延;
3)初始化日志输出大小门限,令日志输出大小门限H=0;
4)动态调整日志输出大小门限,根据平均日志输出时延和未输出的日志大小动态调整日志输出大小门限,以减少平均日志输出时延;
5)输出日志文件。
所述的步骤1)中的定义日志输出时延具体方法如下:
若日志L的生成时间为TA,将该日志输出到日志文件中的时间为TB,则日志L的输出时延为TB-TA。
所述的步骤2)中地定义平均日志输出时延具体方法如下:
在打开日志文件之后关闭日志文件之前,假设总共将n条日志L1、L2、……、Ln输出到日志文件中,日志Li(1≤i≤n)的生成时间为Ti,输出到日志文件的时间为TC,则此次输出日志时的平均日志输出时延为:
DA=1nΣi=1n(TC-Ti)---(1)]]>
所述的步骤4)中的动态调整日志输出大小门限的具体调整方法如下:
令当前未写到日志文件中的日志分别为L1、L2、......、Ln,日志Li(1≤i≤n)的生成时间为Ti,其中T1<T2<......<Tn,日志Li的大小为Mi,当前的日志输出大小门限为H,具体调整策略满足以下规则:
a)若Σi=1nMi≤H,]]>则同时输出L1、L2、......、Ln到日志文件中,若Σi=1nMi>H,]]>则选择k条日志L1、L2、......、Ln,使其满足Σi=1nMi>H,]]>且Σi=1nMi≤H,]]>同时输出L1、L2、......、Ln到日志文件中;
b)根据公式(1)计算平均日志输出时延DA,假设上次输出日志的平均日志输出时延为DL,当未输出的日志大小没有增加时,将日志输出大小门限调整为H-Δ;否则若DA>DL,则将日志输出大小门限调整为H+Δ,若DA<DL,否则将日志输出大小门限调整为H-Δ。
与现有技术相比,本发明具有以下优点:
1、具有创新性,该方法在软件系统的日志功能方面尚属首创。
2、通过调整日志输出大小门限,使得平均日志输出时延达到最小,有效地解决了频繁打开和关闭文件引起输出效率变低问题。
【附图说明】
图1是本发明一种自适应日志文件高效输出处理方法的流程图。
【具体实施方式】
以下结合具体实施例对本发明做进一步说明。
实施例
如图1所示,一种自适应日志文件高效输出处理方法,具体步骤如下:
第1步,定义日志输出时延。假设日志L的生成时间为2009年7月6日12点0分0秒,将该日志输出到文件中的时间为2009年7月6日12点0分30秒,该条日志的输出时延为30秒;
第2步,定义平均日志输出时延。在打开日志文件之后关闭日志文件之前,假设总共输出了2条日志,这2条日志的生成时间分别为2009年7月6日12点0分的0秒、10秒,在2009年7月6日12点50秒时将这2条日志一起输出到了日志文件中。此次输出日志时的平均日志输出时延为
第3步,初始化日志输出大小门限。令日志输出大小门限H为0;
第4步,动态调整日志输出大小门限。令当前未写到日志文件中的日志分别为L1和L2,其输出时间为2009年7月6日12点0分的0秒和10秒,每条日志的大小分别为1k和2k。
若当前的日志输出大小门限H=1,则只输出L1;若H=4,则同时输出L1和L2。假设输出的时刻为2009年7月6日12点50秒。H=1时的平均日志输出时延为50秒,H=4时的平均日志输出时延为45秒。
假设Δ=1,当未输出的日志大小没有增加时,日志输出大小门限变为0;否则若上次输出的平均时延为20秒,则日志输出大小门限变为2;若上次输出的平均时延为100秒,否则日志输出大小门限变为0。
第5步,输出日志文件。将日志输出到日志文件中。