web-dev-qa-db-ja.com

WildFlyでのロギングのオーバーライド

私はTomcatを使用し、デフォルトのロギングシステムを単にオーバーライドしました。 Springアプリでwildflyのlogbackによるロギングを有効にする方法は?

Tomcatで動作するLogback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
        </encoder>
    </appender>

    <logger name="org.springframework" level="WARN" />
    <logger name="com.citronium.planstery" level="INFO" />
    <logger name="org.Apache.http.impl.conn.tsccm" level="ERROR" />

    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>
17

Logbackを使用して、アプリケーションのロギングを構成できます。 logbackを使用してサーバーのログを構成することはできません。

構成でログバックを使用するには、add-logging-api-dependenciesfalseに変更するか、サブシステムを除外するjboss-deployment-structure.xmlを作成する必要があります。デプロイメントにlogbackとslf4jを含める必要もあります。

add-logging-api-dependenciesを変更する最初のオプションは、すべての展開のグローバル設定です。次のCLIコマンドは値を変更します。

/subsystem=logging:write-attribute(name=add-logging-api-dependencies,value=false)

このオプションは、展開に implicit ロギングの依存関係を追加しません。

jboss-deployment-structure.xmlを使用する2番目のオプションは、デプロイメントのみのロギングサブシステムを無効にします。以下はファイルの例です。

<jboss-deployment-structure>
  <deployment>
     <!-- exclude-subsystem prevents a subsystems deployment unit processors running on a deployment -->
     <!-- which gives basically the same effect as removing the subsystem, but it only affects single deployment -->
     <exclude-subsystems>
        <subsystem name="logging" />
    </exclude-subsystems>
  </deployment>
</jboss-deployment-structure>
32

ちなみに、ここでは、wildfly-8.1.0-Finalを使用しています。

まず、このクラスを含むjarファイルを作成します。 https://Gist.github.com/xiaodong-xie/219491e0b433f8bd451e

次に、このjarファイルを「wildfly-8.1.0.Final/modules/system/layers/base/org/jboss/logmanager/main」に配置し、このjarファイルへの参照をmodule.xmlファイルに正確に追加します。フォルダ。

次に、「logback-classic-1.1.2.jar」と「logback-core-1.1.2.jar」(選択した任意のバージョンのlogbackを使用できます)を「wildfly-8.1.0.Final/modules/system/」に配置しますlayers/base/org/jboss/logmanager/main」、およびmodule.xmlファイル内の2つのjarファイルを参照します。

使用しているstandalone.xmlの "subsystem:logging"に以下を追加します。

<custom-handler name="logback" class="org.slf4j.bridge.SLF4JBridgeHandler" module="org.jboss.logmanager"></custom-handler>

次のroot-logger要素でこのハンドラを参照します。

        <root-logger>
            <level name="INFO"/>
            <handlers>
                <handler name="CONSOLE"/>
                <handler name="logback"/>
            </handlers>
        </root-logger>

次に、logback.xmlの例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/>

<appender name="LOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${JBOSS_HOME}/standalone/log/server-logback.log</file>
    <append>true</append>
</appender>
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
    <appender-ref ref="LOGFILE"/>
</appender>
<root level="INFO">
    <appender-ref ref="ASYNC"/>
</root>
</configuration>

そして、このlogback.xmlファイルを「wildfly-8.1.0.Final/standalone/configuration」フォルダーに配置します。

以下を「standalone.sh」または「wildfly-8.1.0.Final/bin」フォルダー内の同等のものに追加します。

-Dlogback.configurationFile=file:$JBOSS_CONFIG_DIR/logback.xml

「-Dlogging.configuration = file:$ JBOSS_CONFIG_DIR/logging.properties」行のすぐ下。 「standalone.sh」ファイルには2か所あります。

================================================== ===============================

または、より簡単な方法でそれを行うことができます。 :)

2つのlogback jarファイルを「jboss.logmanager」モジュールに配置し、「-Dorg.jboss.logging.provider = slf4j」を「standalone.sh」ファイルの同じ位置に追加します。

これを行った場合、Wildfly自体がまだ独自のロギング機能を使用しているため、ロギングが欠落していることがわかりました。

楽しんで。 :-)

5
Xiaodong Xie