目录
log4j的优点
导入log4j的jar包
log4j的错误级别
log4j日志的输出目的地
log4j的配置示例
log4j的全局配置讲解
控制台日志的配置讲解
日志输出文件的配置讲解
使用log4j进行日志记录
注意事项
设置特定的错误级别
log4j的优点
平时我们在开发web项目时,一般都是通过控制台来看日志内容,但是一旦服务器停止,那么日志内容也就消失了,虽然我们自己可以写一个工具,专门用来将控制台显示的日志写入一个文件中,这样的话,即使服务器停止,日志依旧存在,之后,就可以对日志进行一些分析,来排错、优化。
log4j是一个java专用的日志包,使用log4j来记录日志,不仅会在控制台打印日志,同时也将日志写到一个磁盘文件中。使用log4j的话,我们就不用再去写一个相同功能的工具了。
导入log4j的jar包
下载地址:https://logging.apache.org/log4j/2.x/
下载之后,将jar包添加到build path中即可。
log4j的错误级别
在log4j中,一共有5个错误级别,分别是:
1、fatal(致命错误)
2、error(错误)
3、warn(警告)
4、info(提示信息)
5、debug(调试信息)
log4j日志的输出目的地
前面已经说了log4j不仅可以在控制台打印日志,也可以将日志写入文件,所以,log4j日志输出有两个目的地:
1、console(控制台)
2、logfile(日志文件)
log4j的配置示例
在项目的src目录下,创建log4j.properties文件,先看一个配置示例,然后解释配置项
log4j.rootCategory=DEBUG, CONSOLE,LOGFILE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=-%p - %d{yyyy/MM/dd HH:mm:ss} - %C - line:%L - %m%n
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=D:/axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=-%p - %d{yyyy/MM/dd HH:mm:ss} - %C - line:%L - %m%n
log4j的全局配置
log4j.rootCategory=DEBUG, CONSOLE,LOGFILE
这一行配置,表示,log4j打印的日志错误级别是DEBUG(不区分大小写),日志会显示在控制台(console),同时也会将日志写到文件中(logfile)。
控制台日志的配置
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=-%p - %d{yyyy/MM/dd HH:mm:ss} - %C - line:%L - %m%n
上面这三行配置,从左边的键就可以看出这是对显示在控制台的日志格式进行设置的。
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
表示向控制台输出日志时,使用org.apache.log4j.ConsoleAppender这个类来实现功能。
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
表示输出的格式使用org.apache.log4j.PatternLayout这个类来管理。
log4j.appender.CONSOLE.layout.ConversionPattern=-%p - %d{yyyy/MM/dd HH:mm:ss} - %C - line:%L - %m%n
指定输出的格式。其中常用的几个表达式如下:
%p | 输出日志的错误级别 |
%C | 包名.类名 |
%d{YYYY-MM-dd HH:mm:ss} | 时间 |
%L | 行号 |
%m | 日志输出的信息 |
%n | 换行 |
日志输出文件的配置
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=D:/axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=-%p - %d{yyyy/MM/dd HH:mm:ss} - %C - line:%L - %m%n
上面这几行,和控制台日志输出的配置方法一样。
使用log4j进行日志记录
package test;
import org.apache.log4j.Logger;
public class TestLog4j {
public static void main(String[] args) {
Logger logger = Logger.getLogger(TestLog4j.class);
logger.info("这是日志信息");
}
}
注意事项
1、导入Looger包的时候,不要导错误的包,应该是:
import org.apache.log4j.Logger;
2、Logger类定义了log4j相同级别的5个方法,分别是debug()、info()、warn()、error()、fatal(),在使用这5个方法的时候,需要注意,如果配置文件中设置的错误级别是warn(警告级别),那么使用debug()和info()并不会真的输出日志,只有当使用warn(),error(),fatal()来打印日志的时候,才会真的输出日志。所以说,只有当错误级别高于或等于配置文件中是设定的级别时,日志才会被打印,否则就不有输出内容。
设置特定的错误级别
我们的项目中,可能有的地方一点点细微的错误或者警告都很重要,而在有些地方,一些警告都可以忽略。所以,如果我们在log4j.properties中指定log4j追踪的错误级别,这个就有点抓不到重心的感觉。
log4j提供了一个功能,可以专门为某个包下面的类进行设置错误级别,也可以专门为某个特定的类设置错误级别,甚至可以专门为某个特定的方法设置错误级别。
log4j.rootCategory=error, console, logfile
# 将lixin.gan.mapp包下面的所有类的错误级别设置为debug
log4j.lixin.gan.mapper=debug
# 将lixin.gan.service.impl.UserServiceImpl这个类的错误级别设置为error
log4j.lixin.gan.service.impl.UserServiceImpl=error
# 将lixin.gan.service.impl.AdminServiceImpl类中的show方法的错误级别设置为error
log4j.lixin.gan.service.impl.AdminServiceImpl.show=error