上一篇讲了如何导入Log4j的日志框架,并且配置了log4j.properties文件,接下来就以该文件为例,进行一些较为详细的解释。
1.配置根logger:根logger主要定义log4j支持的日志级别及输出目的地。
log4j.rootLogger = [level] , appenderName , appenderName
1)level表示日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG等。日志输出级别以根logger的级别为准。大于等于此级别的日志会被显示在控制台/记录在日志文件。
2)建议只使用四个级别,这四个级别也是用的最多的,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
3)日志级别level以根logger的级别为准,除非单个Appender有设置自己的日志级别。
4)定义的日志级别必须要方便调试。较为稳定版本的系统查看WARN或者ERROR级别的日志。
2.配置输出目的地:Appender(可以一次配置多个Appender)
1)Appender定义日志信息输出在什么位置,主要语法为:
log4j.appender.appenderName = classInfo
log4j.appender.appenderName.option1 = value1
log4j.appender.appenderName.optionN = valueN
2)log4j提供的appender有以下几种,classInfo可以配置以下几种:
org.apache.log4j.ConsoleAppender(日志写到控制台)
org.apache.log4j.FileAppender(日志写到文件)
org.apache.log4j.RollingFileAppender(文件大小达到指定尺寸的时候产生一个新的文件)
org.apache.log4j.DailyRollingFileApperder(每天产生一个日志文件)
注意:appenderName是指定一个标识符。比如,指定控制台为日志输出地,就可以把appenderName命名为console。可以在单个的Appender配置里指定日志的输出级别,并且此时这个Appender的日志级别将会以自己的为准,忽略全局的日志级别配置:
### 输出信息到控制台###
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.Threshold = warn
log4j.appender.console.layout.ConversionPattern = [%p] %d{yyyy-MM-dd HH:mm:ss} method: %l-----%m%n
3.常用参数:
1)%m 输出代码中指定的日志内容
2)%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
3)%c 输出所属的类目,通常就是所在类的全名
4)%n 输出一个回车换行符,windows平台为“/r/n”,Unix平台为“/n”
5)%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后输出指定格式,比如:%d(yyyy-MM dd HH:mm:ss),输出数据格式如下:2017-11-27 19:54:50
6)%l 输出日志的发生位置,包括类目名、发生的线程,以及在代码中的行数
4.如何在日志中记录异常的完整信息
语法:
logger.error(Object message,Throwable t)
message:自定义的错误信息
t:捕捉到的异常
在测试类中创建一个日志对象:
public class Test{
//创建一个日志对象
private static Logger logger = Logger.getLogger(Test.class);
//输出错误日志
logger.error("空指针",new NullPointerException());
throw new NullPorinterException();
}