1、配置根Logger,第一个参数代表日志信息输出等级,共有5个等级:FATAL、ERROR、WARN、INFO、DEBUG,依次往后的等级输出的信息越详细。后面是日志信息的输出地址,可以是多个,就是讲信息同时输出到多个位置,名字自定义,此处举例只有两个,bbb和ccc。
log4j.rootLogger=INFO,aaa,bbb
日志输出目的地
2、bbb和ccc这两个地址到底是什么呢?输出到哪呢?YYYYY和RRRRR就是你的位置,
位置有几种:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender (日志文件)
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
org.apache.log4j.RollingFileAppender (日志信息写满文件一定大小时产生新的日志文件)
org.apache.log4j.WriterAppender (将日志文件以流格式发送到任意指定位置)
log4j.appender.aaa=YYYYY;
log4j.appender.bbb=RRRRR;
3、如果位置是org.apache.log4j.ConsoleAppender,那好理解,就是输出到控制台显示出来;ConsoleAppender有一些配置选项;
Target:以哪种方式输出到控制台,对java来说就是System.out和System.err
threshold:日志消息输出的最低等级(FATAL、ERROR这些)
immediateFlush:默认值为true,所有日志消息立即输出
log4j.appender.aaa=org.apache.log4j.ConsoleAppender
log4j.appender.aaa.Target=System.out
log4j.appender.aaa.Threshold=INFO
log4j.appender.aaa.ImmediateFlush=true
如果是org.apache.log4j.FileAppender,那么只是表明要将日志信息输出到日志文件中去,但是还没有指定要输出到哪个文件中去,比如:log4j.appender.aaa=org.apache.log4j.FileAppender,还需要:log4j.appender.aaa.File=文件的路径。 FileAppender有一些配置选项:
immediateFlush:默认值为true,所有日志消息立即输出
threshold:日志消息输出的最低等级(FATAL、ERROR这些)
File:指定日志文件(路径+文件名)
Append:默认为true,将日志消息添加到日志文件中,false代表将日志消息覆盖到日志文件中
如果是 org.apache.log4j.RollingFileAppender,就是用多个日志文件来存储日志信息,而且每个日志文件的大小是一定的,一些配置选项如下:
immediateFlush:默认值为true,所有日志消息立即输出
threshold:日志消息输出的最低等级(FATAL、ERROR这些)
File:指定日志文件(路径+文件名)
Append:默认为true,将日志消息添加到日志文件中,false代表将日志消息覆盖到日志文件中
MaxFileSize:是每个日志文件的最大存储空间,如果日志信息超过了日志文件的这个最大存储值,那么就会将日志继续存放到新的日志文件中
MaxBackupIndex:代表用于存放日志的日志文件总数,MaxFileSize* MaxBackupIndex=日志总大小
如果是 org.apache.log4j.DailyRollingFileAppender,就是用多个日志文件来存储日志信息,而且每个日志文件的大小是一定的,一些配置选项如下:
immediateFlush:默认值为true,所有日志消息立即输出
threshold:日志消息输出的最低等级(FATAL、ERROR这些)
File:指定日志文件(路径+文件名)
Append:默认为true,将日志消息添加到日志文件中,false代表将日志消息覆盖到日志文件中
DatePatterm:日志滚动周期,如每周、每天、没小时等,记录多久的日志之后,就会新生产一个日志文件,继续记录。
'.' yyyy-MM |
每月 |
'.' yyyy-MM-dd | 每天 |
'.' yyyy-MM-dd-a | 每天2次 |
'.' yyyy-MM-dd-HH | 每小时 |
'.' yyyy-MM-dd-HH-mm | 每分钟 |
'.' yyyy-ww | 每周 |
日志输出格式
上面介绍了如何配置日志输出目的地,接下来介绍日志以什么样的格式(布局)输出。
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可自定义布局)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等)
如果是org.apache.log4j.PatternLayout布局,那就要自己定义输出格式了,如何定义呢?
log4j.appender.aaa.layout=org.apache.log4j.PatternLayout
log4j.appender.ROOT_Appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%5p] (%F\:%L) - %m%n
%m 输出代码中指定的消息
%p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL
%r 输出自应用启动到输出该 log 信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符, Windows 平台为 “rn” , Unix 平台为 “n”
%d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyyy MMM dd HH:mm:ss,SSS} ,输出类似: 2002 年 10 月 18 日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。