如何在struts应用程序中将log4j的日志文件保存在WEB-INF下

时间:2013-12-02 08:48:49

标签: java logging log4

我想将我的log4j的日志文件保存在我的struts2应用程序的WEB-INF下。这是我的log4j.xml文件

     <?xml version="1.0" encoding="UTF-8"?>
     <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
     <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
           <appender name="APPLICATION" class="org.apache.log4j.DailyRollingFileAppender">
               <param name="file" value="${appRootPath}WEB-INF/log/application.log"/>
               <param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm"/>
               <layout class="org.apache.log4j.PatternLayout">
                   <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c %m%n"/>
               </layout>
           </appender>
           <logger name="mypackage">
               <level value="DEBUG"/>
                 <appender-ref ref="CONSOLE"/>
                 <appender-ref ref="APPLICATION"/>
               </logger>
           </log4j:configuration>

如何在我的java代码中设置 appRootPath (Web应用程序上下文路径)?我试试这个

     ServletContext ctx = e.getServletContext();
     System.setProperty("appRootPath", ctx.getRealPath("/"));

但getRealPath()方法返回路径实际上并不是我想要的。我想要这样的路径

    D:\dev\workspace\MyApp\WebContent\WEB-INF\log

所以请分享一些示例或资源。我在开发过程中使用了eclipse juno和window 7.

1 个答案:

答案 0 :(得分:3)

不要这样做。无法保证战争将在磁盘上爆炸,即使它是,容器也可以将代码目录设置为只读,因此您永远不应该尝试写入您的webapp“内部”的位置。