不多说,先上一个XML版的配置范例:
<appender name="fileAppenderInfo" class="org.apache.log4j.DailyRollingFileAppender"> //文件存放路径 <param name="File" value="/opt/caslog/cas_log_info.log" /> //每次记录时是否叠加,默认为true <param name="Append" value="true" /> //日期后缀格式(下面有详细配置说明) <param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm'.log'" /> //日志文件中所显示的信息格式(下面介绍) <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%d{HH:mm:ss:SSS}] [%p] - %m%n"/> </layout> //过滤器,记录的日志等级[LevelMin,LevelMax] <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="INFO" /> </filter> </appender>
一、日期的后缀格式(即DatePattern属性)介绍:
可选值有6个:
* '.'yyyy-MM,对应monthly(每月)
* '.'yyyy-ww,对应weekly(每周)
* '.'yyyy-MM-dd,对应daily(每天)
* '.'yyyy-MM-dd-a,对应half-daily(每半天)
* '.'yyyy-MM-dd-HH,对应hourly(每小时)
* '.'yyyy-MM-dd-HH-mm,对应minutely(每分钟)
注意:1、不需要处理的字符要加单引号,如上面可选值中的'.',还有示例中的'.log'
2、生成的第一个文件不会带有日期后缀,过了DatePatten所设定的间隔后,再生成新的文件后,之前的文件就会被转换成带日期格式的文件。
二、日志文件中所显示的信息格式(即ConversionPattern属性):
-X号: X信息输出时左对齐;
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个"%"字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"
附:范例中对应的java代码:
定义org.apache.log4j.Logger变量:
private static final Logger LOG = Logger.getLogger(xxx.class);
使用:
LOG.info("clerkNo=" +clerkNo+ ",currentTime="+currentTime+",IP="+currentIp);
文件列表展示:
文本内容展示:
[14:14:39:778] [INFO] - clerkNo=8332173,currentTime=2017-09-29 14:14:39,IP=10.12.112.28