前段时间配置了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进行,具体方法略