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

标签 java logging log4j

我想将 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。

最佳答案

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

关于java - 如何在struts应用程序中将log4j的日志文件保留在WEB-INF下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20324125/

相关文章:

eclipse - 如何使应用程序适用于任何 Java 版本?

c++ - 我可以在运行时更改 Log4Qt 配置的文件名吗?

logging - 有没有 "generic log file analyzer/editor"?

java - 无法使用 Log4j2 在控制台中记录消息,但它们已记录在文件中

java - 在 Java 中确定 'type'

java - 如何使hibernate映射成为创建的表?

java - resultset是否直连数据库

python - Sentry - 同时记录 Flask 和 Sentry/相同的 DSN

跨多个环境的 Java 日志记录

java - 如何强制 log4j 从非 src 文件夹加载 xml 配置?