一种扩展ApacheLog4j日志输出级别的方法与流程

文档序号:11829350阅读:439来源:国知局

本发明涉及程序日志输出领域,尤其涉及一种扩展Apache Log4j日志输出级别的方法。



背景技术:

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等。

Log4j现在只具有5种正常日志记录器(logger)级别,包括:DEBUG Level输出应用程序细粒度的日志信息;INFO level输出应用程序粗粒度的日志信息;WARN level输出应用程序可能会出现潜在错误的日志信息;ERROR level输出应用程序发生错误的事件;FATAL level输出应用程序发生严重错误事件会导致应用程序退出。

另外,还包括两种特别的日志记录级别:最低级日志级别ALL Level,用于打开所有日志记录;最高级日志级别OFF Level,用于关闭所有的日志记录。

日志记录器(Logger)的行为是分等级的,OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL是Log4j自带的日志级别,优先级从左至右由高到底,通过在应用程序中定义这些级别,可以控制到应用程序中相应级别的日志信息开关。如在应用程序中定义了ERROR级别,则所有的WARN、INFO、DEBUG级别的日志信息将不被输出。

由于现有的日志输出有严格的级别限制,如在项目实施中,应用程序想在ERROR级别时,输出一些程序运行过程中的关键步骤和业务信息时,现有的日志级别就不能很好的满足于这种需求。



技术实现要素:

为了能实现在不同日志级别时,应用程序都能输出可控的日志信息,本发明在现有的日志级别上扩展了相应的级别,从而实现了可控的日志输出。本发明提供的方法通过以下步骤示出:

步骤一,在日志等级类中自定义日志输出常量类型“string”,其值为“SYST”;

步骤二,在日志输出优先级类中自定义日志输出优先级常量类型为int,其值为60000;

步骤三,在日志等级类中构造静态的日志等级类,其用于表示当前自定义日志等级的日志输出优先级、日志输出名称、系统日志等级;

步骤四,在日志等级类中扩展to level方法以添加将日志名称转换为日志等级的业务;

步骤五,在日志记录器类的输出通道中添加SYST(object message)以及SYST(object message,throwable t)方法用于最终日志输出。

进一步地,步骤一通过以下语句实现:prvate static final String SYST_NAME=“SYST”。

进一步地,步骤二通过以下语句实现:public static final int SYST_INT=60000。

进一步地,步骤三通过以下语句实现:public static final Level SYST=new Level(SYST_INT,SYST_NAME,7)。

进一步地,日志输出优先级常量值高于Apache Log4j中的FATAL_INT优先级常量值。

通过上述方法,可以实现本发明的在现有日志级别上扩展相应级别以实现可控的日志输出的目的,并具有以下有益效果:

通过对Log4j源代码业务的扩展,解决了项目在生产环境中在不同日志级别下,程序执行业务流程的跟踪输出,通过对改造后的源代码的打包编译,形成一个公共的软件开发工具包(SDK),使得以后在项目需求中有类似需求的工程可以直接引入使用。

附图说明

图1为使用本申请的扩展Apache Log4j日志输出级别的方法的流程图。

具体实施方式

以下通过具体的实施例对本发明的扩展Apache Log4j日志输出级别的方法进行进一步说明,应当理解的是,以下具体的实施例中所记载的内容仅用于进一步阐明本发明的上述方法,而不应理解为对本发明的方法的限制。

参考附图1,其示出了本申请的扩展Apache Log4j日志输出级别的方法的流程图。在图1的框101处,通过语句prvate static final String SYST_NAME=“SYST”在日志等级(Level)类中自定义日志输出常量类型“string”,其值为“SYST”。随后在框102处,通过语句public static final int SYST_INT=60000在日志输出优先级(Priority)类中自定义日志输出优先级常量类型为int,其值为60000,该日志输出优先级常量值高于Apache Log4j中的FATAL_INT优先级常量值。接着在框103处,通过语句public static final Level SYST=new Level(SYST_INT,SYST_NAME,7)在日志等级类中构造静态的日志等级类,其用于表示当前自定义日志等级的日志输出优先级、日志输出名称、系统日志等级。接着在框104处,在日志等级类中扩展to level方法以添加将日志名称转换为日志等级的业务。最后在框105处,在日志记录器(Logger)类的输出通道中添加SYST(object message) 以及SYST(object message,throwable t)方法用于最终日志输出。

通过上述方式完成Apache Log4j日志输出级别的扩展后,如以下语句所示配置Log4j.properties文件,在其中调整Log4j.rootlogger=ERROR,CONSOLE,FILE:

配置完成后,如下所示运行日志输出程序:

运行日志输出程序可以得到以下输出结果:

从上述的执行步骤及输出结果可以看到,通过本发明的方法在日志级别为ERROR时,扩展的SYST日志类型的日志得到了完整的输出。

以上所述实施例仅表达了本发明的实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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