接上篇
上篇在log4j.properties中配置的日志输出在控制台,这篇通过输出到一个txt文件来记录日志
log4j-1.2.14.jar
junit.jar
org.hamcrest.core_1.1.0.v20090501071000.jar
public class UserDao { // 创建Logger对象 public static final Logger logger = Logger.getLogger("test"); public void add() { logger.debug("添加了用户信息"); logger.info("添加了用户信息"); logger.warn("添加了用户信息"); logger.error("添加了用户信息"); logger.fatal("添加了用户信息"); } }
<p style="margin: 0in; font-family: 楷体;"></p><p style="margin: 0in; font-family: 楷体;"><pre name="code" class="html">#kong zhi tai shu chu log4j.appender.stout=org.apache.log4j.ConsoleAppender log4j.appender.stout.layout=org.apache.log4j.PatternLayout log4j.appender.stout.layout.ConversionPattern=[%p](%l)-->%m(%d)%n #zui chang yong de yi zhong kai fa fang shi log4j.appender.fout = org.apache.log4j.DailyRollingFileAppender log4j.appender.fout.datePattern='.'yyyy-MM-dd #log4j.appender.fout=org.apache.log4j.FileAppender log4j.appender.fout.file = ${LOG_DIR}user.log log4j.appender.fout.layout=org.apache.log4j.PatternLayout log4j.appender.fout.layout.ConversionPattern=[%p](%l)-->%m%n #log4j.rootLogger=DEBUG,stout log4j.logger.org.zttc.itat.dao =DEBUG,fout,stout
file:文件路径名称
layout:日志输出布局
ConversionPattern:日志输出格式样式
fout:输出日志文件
@Test public void testLog() { String url = UserService.class.getClassLoader().getResource("") .getPath(); url = url.replace("bin/", "log/"); System.out.println(url); System.setProperty("LOG_DIR", url); // UserDao ud = new UserDao(); // ud.add(); UserService us = new UserService(); us.add(); }
上面的方法,是获取到程序中UserService所在路径,然后将路径中的bin替换成log文件夹,之后再通过log4j.appender.fout.file = ${LOG_DIR}user.log在源程序项目中,生成日志文件夹和日志。
效果:在该项目下生成了一个日期格式的日志文件
现在可以试着找一个Hibernate项目提供的log4j.property文件解读一下!
log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.rootLogger=warn, stdout log4j.logger.org.hibernate.SQL=debug
ConversionPattern:输出内容
layout:显示的布局为org.apache.log4j.PatternLayout
日志显示warn以及以上级别的日志信息
而到具体的SQL显示debug及以上级别的日志信息
附注:
ConversionPattern参数的格式含义
格式名 含义
%c 输出日志信息所属的类的全名
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
%f 输出日志信息所属的类的类名
%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
%m 输出代码中指定的信息,如log(message)中的message
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
%r 输出自应用启动到输出该日志信息所耗费的毫秒数
%t 输出产生该日志事件的线程名
(下篇试着将日志Aop切进系统去)