【问题标题】:Mule logging with Log4j in Apache Tomcat在 Apache Tomcat 中使用 Log4j 进行 Mule 日志记录
【发布时间】:2012-08-07 17:50:09
【问题描述】:

我在 Apache Tomcat 中运行 Mule 并使用 Log4j 进行日志记录。但我无法让每个应用程序记录到不同的文件。 我知道当 Mule 以独立模式运行时可以完成。 在这种情况下,是否可以为每个应用程序创建一个日志文件?

这是我使用的 log4j.xml 配置:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
        <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
                <layout class="org.apache.log4j.PatternLayout">
                     <param name="ConversionPattern"
                        value="[%d{dd-MM-yyyy hh:mm:ss:sss}] %5p %c{2}: %m%n" />
                </layout>
        </appender>

        <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
                <appender-ref ref="FILE"/>
        </appender>

        <appender name="FILE" class="org.apache.log4j.RollingFileAppender">
                <param name="File" value="${catalina.base}/logs/MYAPP.log"/>
                <param name="MaxFileSize" value="100MB"/>
                <param name="MaxBackupIndex" value="100"/>
                <layout class="org.apache.log4j.PatternLayout">
                     <param name="ConversionPattern"
                        value="[%d{dd-MM-yyyy hh:mm:ss:sss}] %5p %c{2}: %m%n"/>
                </layout>
        </appender>

        <root>
                <priority value="INFO"/>
                <appender-ref ref="CONSOLE"/>
                <appender-ref ref="ASYNC"/>                
        </root>
</log4j:configuration>

【问题讨论】:

    标签: tomcat logging log4j mule


    【解决方案1】:

    每个应用程序的 OOTB 日志记录功能是仅由 mule Standaone 提供的功能之一(如here 所解释)

    话虽如此,您可以利用 log4j 配置来实现类似的结果。为此,您必须将自定义 log4.properties(或 log4.xml)文件添加到使用 FileAppender 的 webapp 并根据您的需要进行配置

    【讨论】:

    • 我为 Tomcat 上部署的每个应用程序都有一个 log4j.xml 配置文件,但它们都记录到同一个文件。该文件并不总是相同的,是使用“FileAppender”配置的文件之一。我不确定是 Mule 还是 Tomcat 的问题。
    • 能分享一下appender的配置吗?你也只有一个附加程序(FileAppender)还是多个 ose(例如你也有一个控制台)?
    • 刚刚更新了我的问题。我只尝试了 FileAppender,但它也不起作用
    • 我刚刚使用 mule-example-geomail 和类似你的 log4j 配置运行了一些测试,但它工作得很好。这可能是一个类加载问题。也许你的类路径中的一些 jar 包含优先于你的 log4j.properties/xml,你能仔细检查一下吗?
    • 如果您只运行一个应用程序,它可以正常工作。问题来自多个应用程序。
    【解决方案2】:

    在您的示例中,您只声明了一个附加程序“FILE”。

    当您运行多个应用程序时,您可以声明附加的附加程序,以根据包名称显示信息。您仍然会在主日志文件中保留一些信息,这些信息与 org.mule... 包中的错误有关。我猜你就是这么做的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      • 2012-06-17
      • 2014-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多