java-doc-log4j

日志等级

等级 描述
trace 是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出。
debug 调试么,我一般就只用这个作为最低级别,trace压根不用。是在没办法就用eclipse或者idea的debug功能就好了么。
info 输出一下你感兴趣的或者重要的信息,这个用的最多了。
warn 有些信息不是错误信息,但是也要给程序员的一些提示,类似于eclipse中代码的验证不是有error 和warn(不算错误但是也请注意,比如以下depressed的方法)。
error 错误信息。用的也比较多。
fatal 级别比较高了。重大错误,这种级别你可以直接停止程序了,是不应该出现的错误么!不用那么紧张,其实就是一个程度的问题。

properties内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 指定默认日志等级以及日志分类类型
# log4j.rootLogger = [ level ] ,appenderName ,appenderName ……
log4j.rootLogger=info,console,important

# 指定appenderName是console的日志分类信息
# 指定appender的日志操作类型
log4j.appender.console=org.apache.log4j.ConsoleAppender
# 指定appender的日志格式类型
log4j.appender.console.layout=org.apache.log4j.PatternLayout
# 指定appender的日志格式
log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%C]-[%M] %m%n

# 指定appenderName是important的日志分类信息
log4j.appender.important=org.apache.log4j.RollingFileAppender
....
....

appender

类型 描述
org.apache.log4j.ConsoleAppender 控制台
org.apache.log4j.FileAppender 文件
org.apache.log4j.DailyRollingFileAppender 按照一定的频度滚动产生日志记录文件 , 默认每天产生一个文件
org.apache.log4j.RollingFileAppender 文件大小到达指定尺寸的时候产生一个新的文件
org.apache.log4j.WriterAppender 将日志信息以流格式发送到指定的位置

layout

类型 描述
org.apache.log4j.HTMLLayout 以HTML表格形式布局
org.apache.log4j.PatternLayout 可以灵活的指定布局模式 , 需要配置layout.ConversionPattern属性
org.apache.log4j.SimpleLayout 包含日志信息的级别和信息字符串
org.apache.log4j.TTCCLayout 包含日志产生的时间 , 线程 , 类别等等信息

特殊操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# rootLogger里配置debug , 然后某个文件专门存储error以及更高级别的错误信息 , 那么就在这个配置这个文件的时候指定Threshold属性为error ;
log4j.appender.appenderName.Threshold = error

# 默认值是true , 意味着所有的消息都会被立即输出 , false则是不输出 ;
log4j.appender.appenderName.ImmediateFlush=true

# 默认值为System.out , 输出到控制台 , 还可以取值System.err , 当做错误信息输出 , 输出的信息全部为红色 ;
log4j.appender.appenderName.target=System.out

# 指定日志输出到指定位置 , 用的是相对于配置文件根目录的相对路径 ;
log4j.appender.appenderName.File=../../../../logs/log.appenderName.txt

# 默认值是true , 即将消息追加到指定文件中 , 如果取值为false , 则会覆盖之前的日志内容 ;
log4j.appender.appenderName.Append=true

# 后缀可以是KB?, MB?, GB , 当日志文件的大小到达指定大小后 , 将会自动滚动 , 即将原来的内容移到fileName.1文件中 , 用记事本打开该文件即可看到原来的内容 , 改属性只能在 appender=org.apache.log4j.RollingFileAppender 时使用 ;
log4j.appender.appenderName.MaxFileSize=20MB

# 指定可以产生滚动文件的最大数量 , 与RollingFileAppender和MaxFileSize属性一起使用 , 当MaxBackupIndex=n的时候 , 最大日志存在数量为n+1 , 即log.txt , log.txt.1 , ... , log.txt.n , 当在服务器上运行的时候 , 如果对日志数量没有限制 , 那么随之时间的推移 , 日志文件会越来越多 , 占用的内存也将越来越多 , 直到占满整个盘 ;
log4j.appender.appenderName.MaxBackupIndex=10

# 该属性在 log4j.appender.appenderName=org.apache.log4j.DailyRollingFileAppender 时使用 , DailyRollingFileAppender默认的频度是每天产生一个日志记录文件 , 可以在DatePattern属性值中指定其他的频度 , 常用的几个频度如下 :
# '.'yyyy-MM : 每月产生一个日志记录文件 ;
# '.'yyyy-ww : 每周产生一个日志记录文件 ;
# '.'yyyy-MM-dd : 每天产生一个日志记录文件 ;
# '.'yyyy-MM-dd-a : 每半天产生一个日志记录文件 ;
# '.'yyyy-MM-dd-HH : 每小时产生一个日志记录文件 ;
# '.'yyyy-MM-dd-HH-mm : 每分钟产生一个日志记录文件 ;
log4j.appender.appenderName.DatePattern='.'yyyy-MM-dd

日志输出格式

格式 描述
%c 注册日志的类,即Logger.getLogger(xxx.class);
%p 输出日志信息优先级、即DEBUG等
%d 输出日志时间点的日期或时间,例如:%-d{yyyy-MM-dd HH:mm:ss}
%r 输出自应用启动到输出该log信息耗费的毫秒数
%l 输出日志事件的发生位置,相当于%C.%M(%F.%L)的组合,例如:base.log.LOGGER.LOG(LOGGER.java:45)
%C 输出日志事件发生的类名
%M 输出日志事件发生的方法名
%F 输出日志事件发生时所在文件的名称
%L 输出日志事件发生时所在文件的行号
%m 输出日志的消息
%n 输出一个换行