4

私はこのフォーラム、jbossドキュメント、およびインターネットでlog4j構成を7.1.1としてjbossで正常に動作させるために多くのことを読んでいますが、jbossでロギングサブシステムを使用したくありません。独自のlog4j構成を使用したい。私のjbossサーバーはスタンドアロンモードで設定されています。以下は、ドキュメントに基づいてlog4jを構成するために私が行ったことです。

  1. https://docs.jboss.org/author/display/AS71/How+To#HowTo-HowdoIuselog4j.propertiesorlog4j.xmlに従ってjboss-deployment-structure.xmlを定義し、これをMETA-INFに追加しました。私のEARのディレクトリ
  2. log4j.xmlをそのまま追加し、耳のlibディレクトリのjarファイルにパッケージ化しました。
  3. ロギングサブシステムと拡張モジュール="org.jboss.as.logging"をstandalone.xmlから削除しました。
  4. サブシステムが起動する前にjbossサーバーが使用するロギングを読んだので、startup.shでスタートアップパラメーターとして提供されるlogging.propertiesを変更しませんでした。

これらすべてを実行しても、log4j構成に従ってアプリケーションにログを記録させることができません。

ロギングサブシステムの代わりに独自のlog4j構成を使用する理由は、ローテーションされたファイルにファイル名にタイムスタンプを付けるため、size-rotating-file-handlerにカスタムローリングファイルアペンダーを使用できるようにするためです。

感謝します、

では、SizeRotatingFileHandler.javaから拡張するクラスMyHandler.javaを作成し、preWriteメソッドをオーバーライドしました。MyHandler.javaはパッケージabcにあります。モジュールa/b / cの下にサブディレクトリを作成し、cディレクトリ内にMyhandler.classファイルだけを含むjarを追加します。module.xmlを追加します

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="a.b.c">
     <resources>
           <resource-root path="RotatingHandler.jar"/>
          <!-- Insert resources here -->
     </resources>
     <dependencies>
          <module name="org.jboss.logging"/>
     </dependencies>
</module>

次に、standalone.xmlにカスタムハンドラーのエントリを追加しました

<custom-handler name="FILE3" class="a.b.c.MyHandler" module="a.b.c">
        <level name="INFO"/>
        <formatter>
            <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
        </formatter>
        <file relative-to="jboss.server.log.dir" path="srveree.log"/>
    </custom-handler>

Jbossを起動すると、クラスabcMyHandlerが見つからないと表示されます。このエラーを解決するにはどうすればよいですか?

更新:このエラーを解決しました。モジュール内のパッケージ構造に問題がありました。ただし、jboss-as-7.1.1.Finalを使用してlog4jを設定するという元の質問に戻ります。

4

3 に答える 3

4

jbossでlog4jを設定することができました。メインデプロイメント内のサブデプロイメントごとに個別にエクスカーションを追加する必要があることがわかりました。たとえば、jarファイルとwarファイルが内部に芽生えている耳があります。そこで、jboss-deployment-structure.xmlにそれぞれに個別のエントリを追加すると、機能しました。

<sub-deployment name="your-subdeployment.jar">
    <exclusions>
        <module name="org.apache.log4j"/>
        <module name="org.slf4j" />
        <module name="org.apache.commons.logging"/>
        <module name="org.log4j"/>  
        <module name="org.jboss.logging"/>
    </exclusions>
</sub-deployment>
于 2013-02-06T14:52:38.857 に答える
1

EAR/libあなたが示さなかった一つのことは、あなたがあなたのフォルダにもlog4jライブラリを追加したかどうかでした。私はあなたがおそらく持っているか、他のエラーが表示されるはずだと思います。

log4j.xml正直に言うと、log4jがEAR内のJAR内にあるかどうかはわかりません。EAR/META-INFlog4j構成ファイルには、がより適切な場所だと思います。

この場合、ロギングサブシステムを削除する本当の理由はありません。また、私はあなたにそれを使うように説得しようとはしていませんが、あなたが探していることをするためにかなり簡単にカスタムハンドラーを作成することができます。SizeRotatingFileHandlerに基づいて、名前変更にサフィックスを追加することができます。

于 2013-02-01T01:36:32.187 に答える
0

でstandalone.xmlの構成を検討してください

<subsystem xmlns="urn:jboss:domain:logging:1.1">

ここで設定できます

<console-handler name="CONSOLE">
            <level name="DEBUG"/>
...
        <logger category="com.myCompany">
            <level name="DEBUG"/>
        </logger>
...

意味:パッケージcom.myCompanyにあるクラスのロガーはレベルDEBUGからログに記録する必要があります。

于 2013-08-16T14:14:56.673 に答える