log4j 官网推荐使用如下几种,级别从高到低排列java
Level | 描述 |
---|---|
ERROR | 错误事件可能仍然容许应用程序继续运行 |
WARN | 指定具备潜在危害的状况 |
INFO | 指定可以突出在粗粒度级别的应用程序运行状况的信息的消息 |
DEBUG | 指定细粒度信息事件是最有用的应用程序调试 |
org.apache.log4j.ConsoleAppender(输出到控制台),
org.apache.log4j.FileAppender(输出到文件),
org.apache.log4j.DailyRollingFileAppender(天天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)复制代码
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(能够灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)复制代码
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,一般就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也能够在其后指定格式,
好比:%d{yyy MMM dd HH:mm:ss , SSS},输出相似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
举例:Testlog4.main(TestLog4.java: 10 )复制代码
咱们工做中大多数是将全部的日志输出到一个文件中,由于在生产环境中若是不一样级别的日志散落在不一样的文件中,出个错那你就使劲找吧,可是log4j仍是给咱们提供了这个功能,如下我会给出具体的log4j.properties配置文件的详细内容,举例子出不一样的场景.apache
log4j.propertiesbash
#将root级别设置成INFO,并输出到mainLog对应的Append文件中
log4j.rootLogger=INFO, mainLog ,stdout
#将DEBUG级别的日志输出到自定义的Appender中,这里mainLog的级别变成了DEBUG,他会覆盖
#以前的INFO
log4j.logger.log.DetailAppender=DEBUG, mainLog, detailLog
#将某个文件夹的日志级别设置成INFO,并追加到对应的xxAppender中
log4j.logger.com.csjd.xxx=INFO,xx,x
# 将stdout设置成控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.Threshold=DEBUG # 输出DEBUG及以上级别的日志
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n
# 天天生成一个新的文件
log4j.appender.mainLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.mainLog.File=${SA_LOG}/quickfix/mdccdh-info.log
log4j.appender.mainLog.DatePattern = '_'yyyy-MM-dd
log4j.appender.mainLog.Append=true
log4j.appender.stdout.Threshold=INFO # 输出INFO及以上级别的日志
#log4j.appender.mainLog.MaxBackupIndex=30
log4j.appender.mainLog.layout=org.apache.log4j.PatternLayout
log4j.appender.mainLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n复制代码
tips:以上使用的${SA_LOG}为系统环境变量,log4j能够读取环境变量配置,前提是这个变量得存在,否则日志文件不会生成哦,log4j输出日志只会输出比他级别高的日志,不会向下.app