接上篇
上篇在log4j.properties中配置的日志输出在控制台,这篇通过输出到一个txt文件来记录日志
1、导入包
log4j-1.2.14.jar
junit.jar
org.hamcrest.core_1.1.0.v20090501071000.jar
2、日志类
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("添加了用户信息");
}
}
3、编写日志配置文件
<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:输出日志文件
4、运行&效果
@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在源程序项目中,生成日志文件夹和日志。
效果:在该项目下生成了一个日期格式的日志文件
5、小结
现在可以试着找一个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切进系统去)