0

log4j2 からチェーンソーに表示されるように、基本的な Hello World ログ メッセージをストリーミングしようとしています。「Zeroconf」を使用するかどうかは気にしません。機能するものが欲しいだけです。コンソールに出力されるメッセージの形式を変更できるため、テスト プログラムがメッセージをログに記録していることはわかっています。

私の設定ファイル(さまざまな失敗した推測を含む):

<?xml version="1.0" encoding="UTF-8"?>
<configuration advertiser="org.apache.logging.log4j.core.net.MulticastDNSAdvertiser">
  <appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m%n"/>
    </Console>
    <File name="testFile" fileName="logs/test.log" bufferedIO="false" advertiseURI="file://localhost/home/matt/code/ade/logs/test.log" advertise="true">
      <XMLLayout />
    </File>
    <SocketAppender name="socketTest" host="localhost" immediateFlush="true" port="4560" protocol="TCP" advertiseURI="http://localhost" advertise="true">
      <XMLLayout />
    </SocketAppender>
  </appenders>
  <loggers>
    <root level="TRACE">
      <appender-ref ref="Console"/>
      <appender-ref ref="testFile"/>
      <appender-ref ref="socketTest"/>
    </root>
  </loggers>
</configuration>

クラスパスに jmdns.jar を含め、さまざまな時点でチェーンソーを再起動し、イライラするなど、さまざまな組み合わせを試しましたが、何も役に立ちませんでした。

何か案は?

編集:ディスクに保存していたログファイルを読み取れない理由がわかりました(XMLLayoutを使用していませんでした)ので、ストリーミングを機能させるだけでよいことを反映するように質問を更新しました。

4

1 に答える 1

1

「広告主」は log4j2 プラグイン メカニズムを使用するため、完全修飾クラス名ではなく、設定で広告主に定義された「名前」を指定する必要があります。

log4j2 アドバタイズ メカニズムは現在、FileAppender と SocketAppender のアドバタイズをサポートしています。ただし、Chainsaw は、PatternLayout でアドバタイズされる log4j2 FileAppender の検出のみをサポートします。XMLLayout のサポートは、近い将来に登場する予定です。

log4j2 のアドバタイザー メカニズムを利用するには、Chainsaw の最新の開発者スナップショットを使用する必要があります。Chainsaw tarball と DMG は、http: //people.apache.org/~sdeboy/で入手できます。

Chainsaw は、宣伝されている fileappender 構成を検出し、ログ ファイルを解析します (最新の Chainsaw 開発者ビルドを入手した場合はテールを付けます)。Chainsaw 構成は必要ありません。

PatternLayout を使用する必要があり、JMDNS はこのアペンダー構成を使用するアプリケーションのクラスパス上にある必要があることに注意してください。

fileappender 構成をアドバタイズする Log4j2 -appender- 構成の例を次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<configuration advertiser="multicastdns">
    <appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m%n"/>
        </Console>
        <File name="testFile" fileName="logs/test.log" bufferedIO="false" advertiseURI="file:///localhost/home/matt/code/ade/logs/test.log" advertise="true">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m%n"/>
        </File>
    </appenders>
    <loggers>
        <root level="TRACE">
            <appender-ref ref="Console"/>
            <appender-ref ref="testFile"/>
        </root>
    </loggers>
</configuration>

アペンダー構成を使用しているアプリを開始したら、Chainsaw で「Zeroconf」タブを開きます。

アペンダーの名前を含む行が表示されます (fileappender 構成を使用してアプリのクラスパスに jmdns を追加したと仮定します)。

この構成が利用可能であれば、常にこの構成で Chainsaw を起動したい場合は、[自動接続] をクリックします。

次に、アペンダー名の行をダブルクリックすると、Chainsaw がログ ファイルの解析とテーリングを開始します。

ファイル アペンダー構成で提供されるアドバタイズされた URL は、Chainsaw からネットワーク的にアクセスできる必要があります (Chainsaw と fileappender をローカルで使用しているように見えるので、file:/// パスは問題なく動作します - 3 つのスラッシュに注意してください)。

Chainsaw は、各フィールドの周りに区切り文字 (角括弧、ダッシュなど) がある場合に最適に機能します。ただし、区切りたいフィールドにその文字が存在しない場合に限ります。

于 2013-05-10T15:45:43.073 に答える