如何让 Camunda 引擎使用标准日志记录?

How to make Camunda engine use standard logging?

我开始尝试使用 Camunda 引擎并注意到它会绕过我的应用程序日志并将所有内容写入 stdout(或 stderr?)。我怎样才能让它像所有其他库一样正常播放?

就日志记录而言,应用程序具有以下依赖项(在 build.gradle 中):

// Replaced with SLF4j below.  Make sure no libraries pull this as a dependency.
configurations.all {
    exclude group: 'commons-logging'
}

dependencies {
    compile 'org.slf4j:slf4j-api:1.7.12'
    compile 'ch.qos.logback:logback-classic:1.1.3'
    // Replaces Apache Commons Logging with SLF4j.
    compile 'org.slf4j:jcl-over-slf4j:1.7.12'
}

因此,通过 SLF4j 或 Commons Logging 进行日志记录的库都可以。但 Camunda 显然不得不发明另一个轮子......

原来不是另一个轮子,而是java.util.logging。也可以使用以下 JAR 将其重定向到 SLF4j:

    compile 'org.slf4j:jul-to-slf4j:1.7.12'

此桥需要显式安装,但是(Java 代码):

    SLF4JBridgeHandler.removeHandlersForRootLogger ();
    SLF4JBridgeHandler.install ();

出于性能原因,最好将其包含在 Logback 配置中:

  <!-- For java.util.logging bridging; important for Camunda! -->
  <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
    <resetJUL>true</resetJUL>
  </contextListener>