================================
#root logger配置
log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern= %-4r %-5p [%t] %37c %10x %X{traceId} - %m%n
-----------------------------------------------------------
#iphone.fc的logger配置
log4j.logger . iphone.fc=info,iphone
log4j.appender.iphone=org.apache.log4j.ConsoleAppender
log4j.appender.iphone.layout=org.apache.log4j.PatternLayout
log4j.appender.iphone.layout.ConversionPattern=[%d{MM dd HH:mm:ss}]>> %c %m%n
log4j. additivity. iphone.fc=false
=================================================
红色部分即可以作为一个logger的名称引用此配置项,默认的配置或配置文件里面没有配置的logger name的日志会使用root logger的配置
例:
Logger logger1 = Logger.getLogger("Sort.class"),此logger的logger name 为"Sort.class",在配置文件里面没有,则会使用root logger的配置
Logger logger2 = Logger.getLogger(" iphone.fc "),此logger的logger name 为“ iphone.fc“,在配置文件里面可以找到,则会使用iphone.fc的配置
root logger为所有其他logger配置的上级,默认按root logger配置输出后再按本配置输出(即使用logger2输出日志时会先输出一条root logger格式的日志,再输出一条logger2获取的格式的日志),使用 additivity可以设置不附件root logger。
可以通过 conversion patterns 来控制日志的格式化输出
log4j.appender.A1.layout.ConversionPattern=[%d{yyyy-MM-dd hh:mm:ss SSS}] %-4r %-5p [%t] %37c %10x %X{traceId} - %m%n
%d{yyyy-MM-dd hh:mm:ss SSS}:输出当前时间,格式为“年-月-日 时:分:秒 毫秒” %-4r:程序运行的毫秒数,-4表示输出占四个字符,左对齐; %-5p:日志级别,五个字符左对齐; %t:请求日志输出的线程; %37c:日志请求的logger名称,一般为Logger.getLogger(arg)设置的arg,占37个字符右对齐; %10x:通过NDC push的字符串; %X{traceId}:通过MDC put的key为traceId的值; %m:日志的真正内容; %n:输出一个换行符
Appender 为日志输出目的地,Log4j提供的appender有以下几种
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)