【问题标题】:What is the best way to use log4j in the web application?在 Web 应用程序中使用 log4j 的最佳方式是什么?
【发布时间】:2012-03-06 13:16:06
【问题描述】:

我们正在启动一个基于 Spring MVC 的 Web 应用程序。我们将使用 tomcat 作为 Web 服务器。

我需要在应用程序中配置 log4j 并记录到应用程序特定文件而不是 tomcat 日志文件。

例如tomcat 有自己的日志文件,例如 localhost.log 等。我希望在 tomcats 日志文件夹中包含 myAppName.log 之类的内容。

日志配置将进入应用程序war文件中的lo4j.xml或log4j.properties。

另外,我不想在 Web 应用程序中对输出日志文件进行硬编码。

但我不知道该怎么做。

请帮助我。如果我在某个地方错了,也请纠正我。

【问题讨论】:

  • “另外我不想在 Web 应用程序中对输出日志文件进行硬编码”是什么意思?

标签: java tomcat web-applications log4j


【解决方案1】:

这样做,用下面的代码初始化记录器,

Logger log = Logger.getLogger(this.getClass());

记录如下信息,

log.debug("My message");

并将 log4j.xml 放在您的类路径中。内容如下,

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
     <appender name="infoLogsFile" class="org.apache.log4j.RollingFileAppender">
         <param name="File" value="MyApplication.log"/>     
         <param name="Threshold" value="DEBUG"/>
         <param name="MaxFileSize" value="100MB"/>
         <param name="ImmediateFlush" value="TRUE"/>
         <layout class="org.apache.log4j.PatternLayout">
           <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
         </layout>
    </appender>
   <root> 
      <priority value ="DEBUG" /> 
      <appender-ref ref="infoLogsFile"/>
   </root>
</log4j:configuration>

不要忘记添加所需的 jar,例如 log4jXXX.jars 和 apache common logging jar。有了这个,您将能够看到在您的 tomcat 的 bin 文件夹中创建的 MyApplication.log 文件中的所有日志消息。

【讨论】:

    【解决方案2】:

    试试这个:

    • 将 log4j jar 作为 Web 应用程序的一部分

    • 不要将配置作为 Web 应用程序的一部分

    • 根据需要创建 log4j.xml

    • 当你启动 tomcat 时提供这个参数 -Dlog4j.configuration=file:///.../log4j.xml

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 2021-07-25
      相关资源
      最近更新 更多