3

有没有人能够为他们部署在 Mule 中的应用程序使用 logback。我已经配置了一个文件附加程序,并在我的类路径中获得了 logback.xml。然而,这似乎没有得到采纳。

请注意,Mule 可能仍在使用它自己的默认 log4j 实现,因为我看到 mule.log 确实获得了一些日志记录,但不是我尝试记录的日志 - 这让我觉得我的显式日志事件一起丢失了。Mule 默认使用 log4j,但猜我们可以覆盖它吗?这里有一些文档,但不太有用 http://www.mulesoft.org/documentation-3.2/display/MULE3USER/Configuring+Logging

我想要的是仅将 Logback 用于我的应用程序,而无需更改 Mule 系统级别的 jar 和配置。

供参考; 我正在尝试在 logback.xml 中使用以下内容

 <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>D:\logs\mule\myauto.log</file>
        <encoder>
              <pattern>%d [%p] <%c> %m%n</pattern>
        </encoder>
  </appender>

  <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="FILE" />
  </appender>

  <logger name="automationlogger" level="INFO">

        <appender-ref ref="asyncFileAppender" />
  </logger>
4

3 回答 3

1

每个应用程序的日志记录被硬编码为 slf4j/log4j,因为 mule-module-logging 覆盖了 mule 团队必须更改以使其工作的一些 slf4j 类。

如果您查看mule-module-logging pom,您可以看到哪些类被遮蔽,以及为什么除非直接破解 mule 代码,否则不允许您使用 logback。

于 2012-08-01T08:52:44.663 回答
1

我试图用 logback 替换 log4j jar 文件但没有用。包装器使用 log4j 进行日志记录,因此您需要在 /lib/boot 目录中有 log4j jar。如果我在不删除 log4j jars 的情况下添加 logback jars,你会得到以下警告..

SLF4J:在 [jar:file:/C:/dev/mule-standalone-3.3.1/lib/boot/logback-classic-1.0.9.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J 中找到绑定: 在 [jar:file:/C:/dev/mule-standalone-3.3.1/lib/boot/mule-module-logging-3.3.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] 中找到绑定

现在删除 mule 日志记录模块并添加 jcl-over-slf4j。服务器启动并获取配置文件夹中的 logback.xml。但是骡子应用程序特定的日志记录已经消失了。

一天结束,这就是我所做的。

删除:mule-module-logging-3.3.1

添加:logback-classic-1.0.9、logback-core-1.0.9、jcl-over-slf4j-1.7.2、log4j-over-slf4j-1.7.2

于 2013-02-20T03:20:42.277 回答
0

我不熟悉 mule,但您始终可以使用 slf4j + logback,这将使您能够在 slf4j 的log4j 桥的帮助下重定向对 log4j 的日志调用。

于 2012-08-01T06:24:13.880 回答