Log4j配置使用的简单教程

时间:2021-04-03 21:52:17
Log4j是个好东西,软件运行过程中输出日志都靠他啦。不过因为日常的开发工作,都是直接使用也没有怎么仔细研究过,所以现在好好研究研究。其实Log4j还是很简单的,常用的东西不是很多,配置文件理清楚就明白了。

Log4j由三个重要的组件构成:日志信息的级别(level),日志信息的输出目的地(Appender),日志信息的输出格式(Layout)。

日志信息的级别从高到低为:

  • off 最高等级,用于关闭所有日志记录。
  • fatal 指出每个严重的错误事件将会导致应用程序的退出。
  • error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
  • warm 表明会出现潜在的错误情形。
  • info 一般和在粗粒度级别上,强调应用程序的运行全程。
  • debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
  • all 最低等级,用于打开所有日志记录。
分别用来指定这条日志信息的重要程度; 日志信息的输出目的地指定了日志将打印到控制台还是文件中; 日志信息的输出格式则控制了日志信息的显示内容,是以什么样的格式输出的。 下面就来看看log4j是如何配置以及简单使用的。

一、log4j的配置格式

1、首先配置配置根Logger,格式为:
log4j.rootLogger = [level] , appenderName1, appenderName2,blablabla...
这里的level就是上文说的日志信息的级别,常用的是ERROR、WARN、INFO、DEBUG,是不区分大小写的。后面紧跟的appenderName则是日志输出目的地的Appender,Appender的名字是可以随便起的,只要在下面的配置中做对应的配置就好。2、接下来要配置各个Appender,格式为:
log4j.appender.appenderName=【Appender日志信息输出目的地】
其中log4j提供的Appender有以下几种:
  • org.apache.log4j.ConsoleAppender(控制台),
  • org.apache.log4j.FileAppender(文件),
  • org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
  • org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
  • org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
配置相应的Appender就会输出到对应的地方。
log4j.appender.appenderName.File=日志文件保存目录(如果是输出到控制台,就不用配置这一项了)
log4j.appender.appenderName.Append=true true表示日志信息增加到指定文件中,false则将日志信息覆盖指定的文件内容,默认值是true
log4j.appender.appenderName.Threshold=DEBUG 只输出DEBUG级别以上的日志 设置日志输出级别
log4j.appender.appenderName.layout=【Layout日志布局格式】
其中log4j提供的布局格式有以下几种:
  • org.apache.log4j.HTMLLayout(以HTML表格形式布局),
  • org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
  • org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
  • org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
log4j.appender.appenderName.layout.ConversionPattern=日志输出格式
Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:
  • %m 输出代码中指定的消息
  • %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
  • %r 输出自应用启动到输出该log信息耗费的毫秒数
  • %c 输出所属的类目,通常就是所在类的全名
  • %t 输出产生该日志事件的线程名
  • %n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”
  • %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日 22 : 10 : 28 , 921
  • %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )
所以可以根据自己的需求配置*搭配的输出格式,如:%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
一个很简单的配置:
log4j.properties
### 设置 ###
log4j.rootLogger=debug,stdout,DDD,EEE
### 输出信息到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=/Users/tinybye/Documents/log4j/debug.log ###
log4j.appender.DDD=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DDD.File=/Users/tinybye/Documents/log4j/debug.log
log4j.appender.DDD.Append=true
log4j.appender.DDD.Threshold=DEBUG
log4j.appender.DDD.layout=org.apache.log4j.PatternLayout
log4j.appender.DDD.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=/Users/tinybye/Documents/log4j/error.log ###
log4j.appender.EEE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.EEE.File=/Users/tinybye/Documents/log4j/error.log
log4j.appender.EEE.Append=true
log4j.appender.EEE.Threshold=ERROR
log4j.appender.EEE.layout=org.apache.log4j.PatternLayout
log4j.appender.EEE.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

二、使用log4j输出日志

首先要导入log4j的依赖包,新建一个测试类Log4jText.java。然后将配置文件log4j.properties放在和测试类相同的路径的resource文件夹下。如图所示:Log4j配置使用的简单教程
Log4jText类代码如下:
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

/**
* Created by tinybye on 2017/3/14.
*/
public class Log4jText {
private static Logger logger = Logger.getLogger(Log4jText.class);
public static void main(String[] args) {
//获取log4j配置文件
PropertyConfigurator.configure(ClassLoader.getSystemResource("resource/log4j.properties"));
logger.error("ERROR!!!!!");//输出error级别的日志
logger.debug("DEBUG~");//输出debug级别的日志
}
}
Log4j配置使用的简单教程
运行后控制台输出日志如图所示:Log4j配置使用的简单教程
输出日志:在配置的路径下生成两个log日志文件,不同级别的日志信息输出到了对应的log日志文件中。Log4j配置使用的简单教程
呐,就是一些很简单的东西,日常的使用中这些肯定是足够了的。如果想更多的了解log4j的内容,可以看看下面的参考文章。
参考文章:http://www.codeceo.com/article/log4j-usage.html
http://www.cnblogs.com/alipayhutu/archive/2012/06/21/2558249.html
http://blog.csdn.net/azheng270/article/details/2173430/