Log4j说明
log4j是一个日志系统,它可以让我们在编写代码时输出一些日志信息,我们在程序中
调用log4j就可以输出一些日志信息。但是日志信息应该如何输出,输出到哪里,要输
出哪些日志信息,这个时候就需要我们进行配置了。
在使用时应该导入相应的jar包,这里提供相应的maven依赖
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
创建配置文件时,应在resource文件夹下创建log4j.properties,再在其内编写配置信息。
log4j配置文件说明
下面我们通过一个配置例子进行讲解log4j配置文件的编写
//配置实例
log4j.rootLogger = debug,stdout
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
Log4j由三个重要的组件构成:日志信息的级别(level),日志信息的输出目的地(Appender),日志信息的输出格式(Layout)。
这是一个log4j简单配置文件的编写,下面我们来进行一下说明各个属性的作用
首先log4j.rootLogger为配置信息的根logger,第一个参数为debug,debug为一个
日志级别,比这个日志级别高的日志信息都会被处理。
这个级别参数可以为这些:
off 最高等级,用于关闭所有日志记录。
fatal 指出每个严重的错误事件将会导致应用程序的退出。
error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
warm 表明会出现潜在的错误情形。
info 一般和在粗粒度级别上,强调应用程序的运行全程。
debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
all 最低等级,用于打开所有日志记录。
其次是第二个参数:为appenderName,我把它取名叫stdout,这个名字可以随便取,只要下面按照这个名字
配置即可,可以有多个appenderName,紧跟的appenderName则是日志输出目的地的Appender。
接下来要配置各个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(将日志信息以流格式发送到任意指定的地方)
log4j.appender.stdout.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设置格式化打印信息如下:
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 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
以上就为log4j配置文件的编写教程和说明。
测试
对上面举的配置实例进行测试,测试代码如下:
public class Test {
public static void main(String[] args) throws SchedulerException {
Logger logger = Logger.getLogger(Test.class);
logger.error("error级别错误");
logger.warn("warn级别错误");
}
打印情况如下: