日志信息处理方法与流程

文档序号:18009319发布日期:2019-06-25 23:47阅读:140来源:国知局
日志信息处理方法与流程

本发明涉及文件处理技术领域,尤其涉及一种日志信息处理方法。



背景技术:

日志(log)主要用来储存和记录系统运行情况和用户使用情况的详细信息,这些信息是查看系统运行状态和排查问题的主要依据。例如,某个软件中应用程序出现崩溃情况,那么可以从程序事件日志中找到相应的记录,从而帮助相关技术人员分析并解决问题。

以线上系统日志信息为例,日志信息可以用来对线上业务运行过程的记录和运行程序的监控,通过分析记录的日志信息可以为出现和可能出现的错误进行提示、警告,还可以统计业务信息,为业务逻辑改进和应用程序升级提供可靠的依据。

目前,针对linux系统的持续写入应用日志的截断及备份,主要有logrorate滚动日志、shell/python等语言脚本、split大文件切分等处理方式。

但不管哪种处理方式,在不触发应用重载日志的情况下(很多应用也不支持或不方便重载日志),基本都会先用copy/split对文件进行备份或切分处理,然后利用truncate对日志文件进行截断清空操作,而在这两步操作之间,在日志持续写入的情况下,就存在日志丢失的可能。



技术实现要素:

本发明为解决上述技术问题提供一种日志信息处理方法,能够持续写入日志信息且不会丢失日志信息。

为解决上述技术问题,本发明提供一种日志信息处理方法,包括如下步骤:以追加方式持续地向日志文件中写入日志信息;根据设定的定时间隔检测所述日志文件的大小;判断所述日志文件的大小是否达到设定的阈值;如果所述日志文件的大小达到阈值,新建一个增量文件副本,同步向所述增量文件副本中写入日志信息;对所述日志文件进行备份生成日志文件副本;清空所述日志文件;停止向所述增量文件副本中写入日志信息。

进一步地,在停止向所述增量文件副本中写入日志信息的步骤之后,包括:对比所述日志文件副本和所述增量文件副本的日志信息并去除重复的日志信息进而获得完整的日志信息;对所述完整的日志信息进行备份生成备份文件;删除所述日志文件副本和所述增量文件副本。

进一步地,在对所述完整的日志信息进行备份生成备份文件的步骤之后,包括:归档所述备份文件;根据设定的规则清理相应所述备份文件。

进一步地,在归档所述备份文件的步骤之中,包括:新建三个文件夹,分别为重要程度依次增加的info文件夹、warning文件夹以及fatal文件夹;查找所述备份文件中日志信息的日志关键字段,并根据所述日志关键字段的类型将备份文件存储至相应文件夹中;其中,如果所述备份文件中包含fatal类日志关键字段,则将所述备份文件存储至所述fatal文件夹;如果所述备份文件中仅包含warning类日志关键字段,则将所述备份文件存储至所述warning文件夹;如果所述备份文件中不包含fatal类日志关键字段和warning类日志关键字段,则将所述备份文件存储至所述info文件夹。

进一步地,在根据设定的规则清理相应所述备份文件的步骤之中,包括:定时检测磁盘的已用空间;其中,所述info文件夹、所述warning文件夹以及所述fatal文件夹建立于同一所述磁盘下;判断所述磁盘的已用空间是否达到设定的阈值;如果所述磁盘的已用空间达到阈值,则根据所述备份文件的重要程度和生成时间顺序对相应所述备份文件进行删除或转移;其中,优先删除重要程度低且生成时间早的所述备份文件,而保留重要程度高且生成时间近的所述备份文件。

进一步地,在查找所述备份文件中日志信息的日志关键字段的步骤中,包括:如果查找到所述备份文件中日志信息包含fatal类日志关键字段,则触发告警;在根据所述备份文件的重要程度和生成时间顺序对相应所述备份文件进行删除或转移的步骤之中,包括:在所述磁盘仅保留重要程度高且时间近的所述备份文件、且所述磁盘的已用空间仍达到阈值,则触发告警。

进一步地,所述触发告警的方式包括触发邮件、微信、短信以及电话中任意一种的通讯服务。

进一步地,在根据设定的定时间隔检测所述日志文件的大小的步骤之中,所述定时间隔是一个固定值,或者所述定时间隔是一个可自适应调整的变化值。

进一步地,所述定时间隔是一个可自适应调整的变化值时,对所述定时间隔的自适应调整的步骤包括如下:

设定一初始化值、一最小值以及一最大值,所述初始化值介于所述最小值和所述最大值之间;将所述定时间隔赋值为初始化值;根据设定的所述定时间隔检测所述日志文件的大小;判断所述日志文件的大小是否达到设定的阈值;在判断所述日志文件的大小是否达到设定的阈值的步骤中,如果所述日志文件的大小达到阈值,判断所述日志文件的大小是否达到n倍阈值;如果所述日志文件的大小达到n倍阈值,将所述定时间隔赋值为(1/n)×本次所述定时间隔;判断所述定时间隔是否大于最大值;如果所述定时间隔小于等于最大值,则进入根据设定的所述定时间隔检测所述日志文件的大小的步骤;如果所述定时间隔大于最大值,则将所述定时间隔赋值为最大值,进而进入根据设定的所述定时间隔检测所述日志文件的大小的步骤;在判断所述日志文件的大小是否达到设定的阈值的步骤中,如果所述日志文件的大小小于阈值,判断所述日志文件的大小是否小于等于m倍阈值;如果所述日志文件的大小小于等于m×阈值,将所述定时间隔赋值为(1/m)×本次所述定时间隔;判断所述定时间隔是否小于最小值;如果所述定时间隔大于等于最小值,则进入根据设定的所述定时间隔检测所述日志文件的大小的步骤;如果所述定时间隔小于最小值,则将所述定时间隔赋值为最小值,进而进入根据设定的所述定时间隔检测所述日志文件的大小的步骤;其中,n>1,0<m<1。

为解决上述技术问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器配置为执行如上述任一项实施例所述的日志信息处理方法中的步骤。

本发明的日志信息处理方法,具有如下有益效果:

通过以追加方式持续向日志文件中写入日志信息,并在日志文件的大小达到设定的阈值时,新建一增量文件副本并同步向增量文件副本中写入日志信息,并在备份日志文件及清空日志文件之后才停止向增量文件副本中写入日志,能够实现日志信息的持续写入且不会丢失日志信息。而且对备份作业过程对运行中的应用程序完全无影响。

此外,通过对备份文件进行归档管理、以及及时清除,能够有效利用存储空间。

附图说明

图1是本发明日志信息处理方法第一实施例的流程图。

图2是本发明日志信息处理方法第二实施例的流程图。

图3是本发明日志信息处理方法第三实施例的流程图。

图4是本发明日志信息处理方法第四实施例的流程图。

具体实施方式

下面结合附图和实施方式对本发明进行详细说明。

本发明提供一种日志信息处理方法。该日志信息处理方法包括如下步骤:

步骤s1,采用追加方式持续地向日志文件中写入日志信息。

步骤s2,根据设定的定时间隔检测日志文件的大小。

步骤s3,判断日志文件的大小是否达到设定的阈值。

在步骤s3中,如果日志文件的大小达到阈值,则进入步骤s4;而如果日志文件的大小未达到阈值,则进入步骤s2。

步骤s4,新建一个增量文件副本,并同步向增量文件副本中写入日志信息。

在步骤s4中,同步写入到增量文件副本中的日志信息与写入到日志文件中的日志信息是相同的,也即在日志文件大小达到阈值时,通过进行文件截断操作,以将写不进去日志文件或在日志文件中无法得到保存等状况下的日志信息写入到增量文件副本中,以避免日志信息的丢失。其中,可以利用tail–f等指令将日志信息写入到增量文件副本中。

步骤s5,对日志文件进行备份生成日志文件副本。

其中,可以利用copy/split等指令对日志文件进行备份。

步骤s6,清空日志文件。

该步骤s6起到释放日志文件的存储空间的作用,以利于持续地向日志文件中写入日志信息。其中,可以利用cat/dev/null>xxx.log等指令清空日志文件。

步骤s7,停止向增量文件副本中写入日志信息。

该步骤s7在步骤s6后进行,有效避免清空日志文件时日志文件丢失的问题。其中,可以利用kill指令停止tail进程。

上述步骤s1~s7的设计,在日志文件存储空间达到极限的情况下,通过同步向日志文件和新建的增量文件副本中写入日志信息,能够确保持续性地写入日志信息,同时有效防止日志信息的丢失。并且,在清空日志文件的同时通过继续向增量文件副本中写入日志信息,不需要在清空日志文件时暂停日志信息的写入,进而在日志文件清空完成后不需要重启日志信息的写入,进一步保证了日志信息写入的持续性,同时防止日志信息的丢失。

在一具体实施例中,具体在步骤s7之后,包括:

步骤s8,对比日志文件副本和增量文件副本的日志信息并去除重复的日志信息以获得完整的日志信息。

步骤s9,将所获得的完整的日志信息进行备份生成一备份文件。

该步骤s9的设置,能够获取完整、无重复的备份文件。

步骤s10,删除日志文件副本和增量文件副本。

该步骤s10的设置,能够删除冗余文件。

步骤s11,归档备份文件。

步骤s12,根据设定的规则清理备份文件。

在步骤s11中,具体在归档备份文件的步骤之中,进一步包括如下步骤:

步骤s111,新建三个文件夹,分别为info文件夹、warning文件夹以及fatal文件夹。

其中,该三个文件夹即info文件夹、warning文件夹以及fatal文件夹的重要性为依次递增的关系。其中,fatal文件夹用于存储其内日志信息中包含fatal类日志关键字段如error、invalid等的备份文件;warning文件夹用于存储其内日志信息中仅仅包含warning类日志关键字段如timeout、warning等的备份文件;info文件夹用于存储其内日志信息中不包含fatal类日志关键字段和warning类日志关键字段的备份文件。

步骤s112,查找备份文件中日志信息的日志关键字段,并根据日志关键字段中类型的不同将备份文件存储至相应文件夹中。

其中,也即如果备份文件中日志信息包含fatal类日志关键字段,则将备份文件(称之为fatal类备份文件)存储至fatal文件夹;如果备份文件中日志信息仅仅包含warning类日志关键字段,则将备份文件(称之为warning类备份文件)存储至warning文件夹;如果备份文件中日志信息既不包含fatal类日志关键字段、又不包含warning类日志关键字段,则将备份文件(称之为info类备份文件)存储至info文件夹。

优选地,在将包含fatal类日志关键字段的备份文件存储至fatal文件夹时,同步触发告警以提示用户。其中,举例可以通过触发邮件、微信、短信、电话等通讯服务来进行告警。

在步骤s12中,具体在根据设定的规则清理备份文件的步骤之中,进一步包括如下步骤:

步骤s121,定时检测磁盘的已用空间。其中,三个文件夹通常建立并存储在同一磁盘下。

步骤s122,判断磁盘的已用空间是否达到设定的阈值。如果磁盘的已用空间达到阈值,则进入步骤s123;否则,进入步骤s121,也即不需要对备份文件进行清理,只需要再监控磁盘空间即可。

步骤s123,则根据备份文件的重要程度和生成时间顺序对相应备份文件进行删除或转移。

在步骤s123中,优选先删除重要程度较低、生成时间较早的备份文件。比如,先删除或转移第一指定日期之前生成的存储于info文件夹下的info类备份文件;如果检测并判断到磁盘的已用空间仍达到阈值,则删除或转移第一指定日期之前生成的存储于warning文件夹下的warning类备份文件;如果检测并判断到磁盘的已用空间仍达到阈值,则继续删除或转移第二指定日期之前(晚于第一指定日期)生成的info类备份文件;如果检测并判断到磁盘的已用空间仍达到阈值,则继续删除或转移第二指定日期之前生成的warning类备份文件…;直至保留某一指定日期之前生成的info类备份文件和warning类备份文件;如果检测并判断到磁盘的已用空间仍达到阈值,则删除或转移第三指定日期之前生成的存储于fatal文件夹下的fatal类备份文件;如果检测并判断到磁盘的已用空间仍达到阈值,则删除或转移第四指定日期之前(晚于第三指定日期)生成的fatal类备份文件;直至保留某一指定日期之前生成的fatal类备份文件。

较佳的,在完成所有根据备份文件的重要程度和生成时间顺序对相应备份文件进行删除或转移的步骤之后,也即在根据预设规则删无可删或没有可转移的备份文件之后,如果检测并判断到磁盘的已用空间仍达到阈值,则触发告警以提示用户做出解决策略。其中,举例同样可以通过触发邮件、微信、短信、电话等通讯服务来进行告警。

在一例举的实施例中,将磁盘的已用空间的阈值设置为70%(可参数化配置)。如果超过,则删除30日(可参数化配置)之前的info类备份文件;如果删除后磁盘已用空间仍然超过70%,则删除30日(可参数化配置)之前的warning类备份文件;如果删除后磁盘已用空间仍然超过70%,则删除10日(可参数化配置)之前的info类备份文件;如果删除后磁盘已用空间仍然超过70%,则删除10日(可参数化配置)之前的warning类备份文件;如果删除后磁盘已用空间仍然超过70%,则删除3日(可参数化配置)之前的info类备份文件;如果删除后磁盘已用空间仍然超过70%,则删除3日(可参数化配置)之前的warning类备份文件;如果删除后磁盘已用空间仍然超过70%,则删除90日(可参数化配置)之前的fatal类备份文件;如果删除后磁盘已用空间仍然超过70%,则删除30日(可参数化配置)之前的fatal类备份文件;如果删除后磁盘已用空间仍然超过70%,则触发邮件或微信告警。

在一具体实施例中,具体在步骤s2即按设定的定时间隔检测日志文件的大小的步骤之中,该定时间隔可以被赋予为一个固定值。

在一较佳实施例中,该定时间隔还可以被设计为一个能够根据日志写入速度和日志文件的大小之间的关系自适应(即自动或自主)调整的变化值。具体而言,先设定一初始化值a、一最小值b以及一最大值c,初始化值a介于最小值b和最大值c之间(即b<a<c),具体的,在采用追加方式持续地向日志文件中写入日志信息的步骤(图1所示实施例中步骤s1)之后,可以通过如下步骤来实现定时间隔的可变设置,包括如下步骤:

步骤s301,将定时间隔t赋值为初始化值a(即t=a)。初次运行时,定时间隔t=a。

步骤s302,根据设定的定时间隔t检测日志文件的大小s。

步骤s303,判断日志文件的大小s是否达到设定的阈值v。

在步骤s303中,如果日志文件的大小s达到阈值v,进入步骤s304,并进入新建一个增量文件副本,并同步向增量文件副本中写入日志信息的步骤(图1所示实施例中步骤s4);而如果日志文件的大小s小于阈值v,进入步骤s308。

步骤s304,判断日志文件的大小s是否达到n倍阈值(即nv)。

在步骤s304中,如果日志文件的大小s没有达到nv,那么定时间隔t在此时不发生改变,仍进入根据设定的定时间隔t检测日志文件的大小s的步骤,即进入步骤s302;而如果日志文件的大小s达到nv,则进入步骤s305。

步骤s305,将定时间隔赋值为(1/n)×本次定时间隔(即(1/n)t)。

步骤s306,判断定时间隔t是否小于最小值b。

在步骤s306中,如果定时间隔t大于等于最小值b,则进入根据设定的定时间隔t(此时,t=(1/n)t)检测日志文件的大小s的步骤,即进入步骤s302;如果定时间隔t小于最小值b,则进入步骤s307。

步骤s307,将定时间隔t赋值为最小值b。进而进入根据设定的定时间隔(此时,t=b)检测日志文件的大小的步骤,即进入步骤s302。

步骤s308,判断日志文件的大小s是否小于等于m倍阈值(即mv)。

在步骤s308中,如果日志文件的大小s大于mv,那么定时间隔t在此时也不发生改变,仍进入根据设定的定时间隔t检测日志文件的大小s的步骤,即进入步骤s302;而如果日志文件的大小s小于等于mv,则进入步骤s309。

步骤s309,将定时间隔t赋值为(1/m)×本次定时间隔(即(1/m)t)。

步骤s310,判断定时间隔t是否大于最大值c。

在步骤s310中,如果定时间隔t小于等于最大值c,则进入根据设定的定时间隔t(此时,t=(1/m)t)检测日志文件的大小s的步骤,即进入步骤s302;如果定时间隔t大于最大值c,则进入步骤s311。

步骤s311,将定时间隔t赋值为最大值c。进而进入根据设定的定时间隔t(此时,t=c)检测日志文件的大小s的步骤,即进入步骤s302。

其中,n>1,0<m<1。

根据上述步骤,本发明举例可以将参数采用如下设置,a=10(min),b=1(min),c=100(min),n=2,m=0.5。

初始化配置t=a=10(min);

第一次触发检测日志文件的大小s时,如果发现s<0.5v,则将t延长一倍(即t=2t=20(min));第二次触发检测日志文件的大小s时,如果仍发现s<0.5v,则将t再延长一倍(即t=2t=40(min))…如此循环,t最多可以被延长至为c。

在第一次触发检测日志文件的大小s时,如果发现s≥v,一方面执行新建增量文件副本并向该增量文件副本中写入日志信息的步骤,另一方面则进入判断s是否大于等于2v的步骤。如果发现s≥2v,则将t减小一半(即t=(1/2)t=5(min));第二次触发检测日志文件的大小s时,如果仍发现s≥2v,则将t再减小一半(即t=(1/2)t=2.5(min))…如此循环,t最少可以被缩短至为b。

根据上述步骤和原理,可以对定时间隔t进行动态设计,以寻找到合理的扫描定时间隔,减少系统干扰,进而可以根据业务忙闲情况,自动调整扫描备份频率。

本发明的日志信息处理方法,具有如下有益效果:

通过以追加方式持续向日志文件中写入日志信息,并在日志文件的大小达到设定的阈值时,新建一增量文件副本并同步向增量文件副本中写入日志信息,并在备份日志文件及清空日志文件之后才停止向增量文件副本中写入日志,能够实现日志信息的持续写入且不会丢失日志信息。而且对备份作业过程对运行中的应用程序完全无影响。

此外,通过对备份文件进行归档管理、以及及时清除,能够有效利用存储空间。

以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1