log4j日志文件路径的配置

阅读:9次   时间:2007-03-23 08:12:26   字体:[ ]

前段时间配置了log4j,发现这玩意也是嗷嗷功能强大,偶比较菜,以前都是System.out.println(...)

想起就惭愧啊

主要就是日志文件的路径配置,在网上搜了很就才找到,可以自己指定日志路径

部分摘至:http://dev.csdn.net/develop/article/21/21291.shtm
(1)log4j输出的日志文件的路径能否在程序中指定?

log4j.appender.t=org.apache.log4j.DailyRollingFileAppender  
log4j.appender.t.file=D:\\a\\b\\c\\log.txt  
上面的配置是输出文件到一个固定的路径下面.  
我能否在程序中指定输出的日志文件到工程的目录下面:比如struts中的  
getServlet().getServletContext().getRealPath("");  

---------------------------------------------------------------  

String   logFile   =   getServlet().getServletContext().getRealPath("/");  
logger.addAppender(   new   DailyRollingFileAppender(   new   PatternLayout(   "%d   %-5p   %c   %x   -   %m%n"   ),   logFile,   "'.'yyyy-MM-dd")   );  

谢谢,这种方法是可以的,我后来用了另一个方法,就是做一个servlet,在系统加载的时候,就把properties的文件读到一个properties文件中.那个file的属性值(我使用的是相对目录)改掉(前面加上系统的根目录),让后把这个properties对象设置到propertyConfig中去,这样就初始化了log的设置.在后面的使用中就用不着再配置了

(2)解决log4j输出的日志文件的位置的配置问题

我一直希望自己的web应用的配置能够简化,最好的方式就是打个包后扔哪都能用,即使非得再做一些配置的话,也希望只是一些连接池的配置信息。这个目标在现在手头的这个项目中也几乎达到了,除了log文件的位置。
在log4j的配置文件中对于log输出的路径一向都是使用绝对路径,这样就导致在不同的机器上部署时都得重新定义一下log文件的输出位置。虽说费时不多,可对于我这种宁可少一事,不愿多一事的人来说,总是觉得有点郁闷。
踏破铁鞋无觅,得来不费功夫。不经意见看到了一个文档,介绍说log4j的配置文件支持windows的环境变量,格式类似velocity:${env},ok,问题解决:
一般来说我们会将一些初始化的信息放到web.xml中,以便在系统启动时就运行。循此思路,将log文件的位置放到webapp下面的任意处,如webapp/WEB-INF/conf/logs下面,则可以在log4j.properties文件中做如下定义:
log4j.appender.R.File=${webappHome}/WEB-INF/conf/logs/sysout.log
其中的${webappHome}即是通过System.setProperty("webappHome", webappHome);实现的,此操作可通过一初始的servlet进行,具体方法略

 源码推荐
关于本站 - 广告服务 - 会员指南 - 联系方法
Copyright ©2003-2011 源码天空 All Rights Reserved