美文网首页
Apache开源日志框架Log4j配置指南(1.x)

Apache开源日志框架Log4j配置指南(1.x)

作者: 老九君 | 来源:发表于2019-08-16 11:39 被阅读0次

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最方便的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

本篇指南主要介绍Log4j 1.x版本的配置与使用

Log4j最新版下载地址:http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.17/log4j-1.2.17.zip

一、在Eclipse中配置Log4j

1.1、新建Java工程,导入包log4j-1.2.17.jar,工程如下图:

1.2、在src下创建log4j.propertiese配置文件,复制并粘贴以下内容到文件中:

### 根logger主要定义log4j支持的日志级别及输出目的地 ###log4j.rootLogger=debug,stdout,file### 配置控制台输出及输出格式 ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=[%-5p]%d{yyyy-MM-dd HH:mm:ss,SSS}method:%l%n%m%n### 输出DEBUG级别以上的日志到工程根目录下的logs/log.log文件,可以自行修改为绝对路径 ###log4j.appender.file=org.apache.log4j.FileAppenderlog4j.appender.file.File=logs/log.loglog4j.appender.file.Append=truelog4j.appender.file.Threshold=DEBUGlog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}[%t:%r]-[%p]%m%n

注意:粘贴到Eclipse中后,有些小伙伴会呈现“乱码”:\u6839,这是Unicode编码,并不影响程序的执行。

1.3、在Java类中书写代码

packagecom.xuetang9.kenny;importorg.apache.log4j.Logger;/**

* 使用Log4j打印日志信息<br/>

* @author Kenny

* @version 1.0

* @date 2018年1月8日 下午9:41:13

* @copyright 老九学堂

*/publicclassLoggerTest{privatestaticLogger logger=Logger.getLogger(LoggerTest.class);publicstaticvoidmain(String[]args){//日志记录的行为是分等级的,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL或者您定义的级别。//Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。logger.debug("记录debug级别信息");logger.info("记录info级别信息");logger.warn("记录warn级别信息");}}

1.4、输出结果:

控制台:

logs/log.log文件中:

二、Log4j的基本使用方法

Log4j是高度可配置的,并可通过在运行时的外部文件配置。它根据记录的优先级别,并提供机制,以指示记录信息到许多的目的地,诸如:数据库,文件,控制台,UNIX系统日志等。

Log4j中有三个主要组成部分:

– loggers: 负责捕获记录信息。

– appenders : 负责发布日志信息,以不同的首选目的地。

– layouts: 负责格式化不同风格的日志信息。

2.1、配置文件的定义

log4j也可以通过配置文件的方式进行设置,目前支持两种格式的配置文件:xml文件和properties文件(推荐)。

1、配置根Logger,语法为:

log4j.rootLogger=[level],appenderName1,appenderName2,....

level表示日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别(E、F、G等)。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,我们可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。appenderName就是指日志信息输出到哪个地方。可以同时指定多个输出目的地。

2、配置日志信息输出目的地(Appender),语法如下:

log4j.appender.appenderName=fully.qualified.name.of.appender.classlog4j.appender.appenderName.option1=value1...............log4j.appender.appenderName.option=valueN

其中,log4j提供的appender有以下几种,根据项目需要使用即可:

org.apache.log4j.ConsoleAppender            输出到控制台org.apache.log4j.FileAppender              输出到文件org.apache.log4j.DailyRollingFileAppender  每天产生一个日志文件org.apache.log4j.RollingFileAppender        文件大小到达指定尺寸的时候产生一个新的文件org.apache.log4j.WriterAppender            将日志信息以流格式发送到任意指定的地方

3、配置日志信息输出的格式(布局),语法如下:

log4j.appender.appenderName.layout=fully.qualified.name.of.layout.classlog4j.appender.appenderName.layout.option1=value1..............log4j.appender.appenderName.layout.option=valueN

Log4j提供的格式layout有以下几种:

org.apache.log4j.HTMLLayout    以HTML表格形式布局org.apache.log4j.PatternLayout  可以灵活地指定布局模式(常用)org.apache.log4j.SimpleLayout  包含日志信息的级别和信息字符串org.apache.log4j.TTCCLayout    包含日志产生的时间、线程、类别等等信息

Log4j采用类似C语言的printf函数格式化日志信息,打印参数如下:

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL%r 输出自应用启动到输出该log信息耗费的毫秒数%c 输出所属的类目,通常就是所在类的全名%t 输出产生该日志事件的线程名%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2018年12月31日23:59:59,123%l 输出日志事件的发生位置,包括类名、发生的线程,以及在代码中的行数。如:LoggerTest.main(LoggerTest.java:18)

4、日志级别

每个Logger都被了一个日志级别(log level),用来控制日志信息的输出。日志级别从高到低分为:

A:off 最高等级,用于关闭所有日志记录。

B:fatal 指出每个严重的错误事件将会导致应用程序的退出。

C:error 指出虽然发生错误事件,但仍然不影响系统的继续运行。

D:warm 表明会出现潜在的错误情形。

E:info 一般和在粗粒度级别上,强调应用程序的运行全程。

F:debug 一般用于细粒度级别上,对调试应用程序非常有帮助。

G:all 最低等级,用于打开所有日志记录。

上面这些级别是定义在org.apache.log4j.Level类中。Log4j只建议使用4个级别,优先级从高到低分别是error,warn,info和debug。通过使用日志级别,可以控制应用程序中相应级别日志信息的输出。例如,如果使用b了info级别,则应用程序中所有低于info级别的日志信息(如debug)将不会被打印出来。

老九学堂出品,转载请私信哦

对于文章内容有不理解的可以添加老九君个人QQ:614940318,请备注来自简书

老九学堂免费C、C++、Java课程地址:

https://study.163.com/courses-search?keyword=%E8%80%81%E4%B9%9D%E5%AD%A6%E5%A0%82

相关文章

  • 初探log4j

    log4j 1.x log4j是目前较为常用的日志框架,该项目由apache进行维护。(其他常见的日志框架还有ja...

  • log4j2+Slf4j日志配置文件

    log4j简介 log4j是java常见的日志输出框架, 2015年5月,Apache宣布Log4J 1.x 停止...

  • Apache开源日志框架Log4j配置指南(1.x)

    Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI...

  • Log4j2基本使用入门

    1.Log4j2简介 Apache Log4j 2是日志框架Log4j的升级,它比其前身Log4j 1.x提供了重...

  • log4j详细介绍

    log4j是什么 *Apache的开源项目log4j是一个功能强大的日志组件(框架),提供方便的日志记录。 日志的...

  • Java日志体系(log4j)

    log4j 1.1 简介 Log4j是一个由Java编写可靠、灵活的日志框架,是Apache旗下的一个开源项目;现...

  • Log4J详解

    log4j 1.1 简介 Log4j是一个由Java编写可靠、灵活的日志框架,是Apache旗下的一个开源项目;现...

  • log4j2+springBoot

    首先介绍下常见的开源日志组件:log4j是apache实现的一个开源日志组件logback同样是由log4j的作者...

  • Log4j

    Log4j用于日志记录,有两个版本,一个是老版本Log4j 1.x,这里写的是新版本Apache Log4j 2的...

  • 一篇文章看懂Apache log4j2 远程代码执行漏洞(CVE

    漏洞始末 【漏洞描述】Apache Log4j 2是一款开源的Java的日志记录工具,大量的业务框架都使用了该组件...

网友评论

      本文标题:Apache开源日志框架Log4j配置指南(1.x)

      本文链接:https://www.haomeiwen.com/subject/ofefsctx.html