0

jackrabbit-standalone-2.6.0.jar を使用してプログラムでロギングをセットアップしようとしています。このアーカイブには、いくつかの slf4j パッケージ (org.slf4j、org.slf4j.helpers、org.slf4j.impl、org.slf4j.spi) が含まれていますが、私が見る限り、ログ フレームワークはありません。しかし、slf4j-log4j12-1.7.2.jar を追加すると、次のメッセージが表示されます。

SLF4J: [jar:file:/D:/Anwendungen/EclipsePlugins/Jackrabbit/jackrabbit-standalone-2.6.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] でバインディングが見つかりました SLF4J: [jar:file でバインディングが見つかりました] :/D:/Anwendungen/EclipsePlugins/slf4j-1.7.2/slf4j-1.7.2/slf4j-log4j12-1.7.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]

ここでどの種類のインプリメンターが使用されているかを確認する機会はありますか?

ロガーを設定したい。現在、「jackrabit.log_IS_UNDEFINED」というファイルに大量の DEBUG メッセージが書き込まれており、緊急にこれを抑制する必要があります。ロガーのセットアップを提案するヒントがインターネットにいくつかありますが、何をする必要があるのか​​ 正確にはわかりません。クラス「DOMConfigurator」および「PropertyConfigurator」はパッケージ内では使用できませんが、たとえば「slf4j-log4j12-1.7.2.jar」を追加すると、上記のメッセージが表示されます。そのため、プログラム内でロガーを初期化できません。構成 XML をクラスパスに追加するとのことでした。私はこれを試しました(Eclipseで、XMLを含むフォルダーをBuildPathに追加し、XMLファイルからjarファイルを作成し、このjarファイルをBuildPathに追加しました)が、違いはありませんでした。

http://logging.apache.org/log4j/1.2/manual.htmlの「デフォルトの初期化手順」の説明を読みましたが、まったく理解できなかったと言わざるを得ません。意味: 2. リソース文字列変数を log4j.configuration システム プロパティの値に設定します。デフォルトの初期化ファイルを指定するには、log4j.configuration システム プロパティを使用することをお勧めします。システム プロパティ log4j.configuration が定義されていない場合は、文字列変数 resource をデフォルト値の「log4j.properties」に設定します。resource-string 変数はどこで指定する必要がありますか?

私のlog4j.xmlファイル:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
         <appender name="Console" class="org.apache.log4j.ConsoleAppender">
             <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d  %-5p  [%c{1}] %m %n" />
            </layout>
        </appender>

        <root>
            <priority value="info" />
            <appender-ref ref="Console" />
        </root>
 </log4j:configuration>

ロガーをプログラムで構成するか、デフォルトの初期化にするというアイデアは大歓迎です。

ウルリッヒ

4

1 に答える 1

0

バージョン 1.6.6 の時点で、複数のバインドがクラス パスで見つかった場合、SLF4J はバインドするフレームワーク/実装クラスの名前を出力します。" " 行の直後に、SLF4J: Found binding次で始まる行があるはずです。

"SLF4J: Actual binding is of type []"

その行を見逃しましたか?

jackrabbit-standalone-2.6.0.jar の内容は、ロギング フレームワークとして logback が同梱されていることを示しています。jackrabbit-standalone-2.6.0.jar ファイルには、logback.xml 構成ファイルも付属しています。

その logback.xml ファイルは次のとおりです。

<configuration>
  <appender name="jackrabbit" class="ch.qos.logback.core.FileAppender">
    <file>${jackrabbit.log}</file>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-40([%thread] %F:%L) %msg%n</pattern>
    </encoder>
  </appender>

  <appender name="jetty" class="ch.qos.logback.core.FileAppender">
    <file>${jetty.log}</file>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-40([%thread] %F:%L) %msg%n</pattern>
    </encoder>
  </appender>

  <logger name="org.mortbay.log" level="${log.level}"
          additivity="false">
    <appender-ref ref="jetty"/>
  </logger>

  <root level="${log.level}">
    <appender-ref ref="jackrabbit"/>
  </root>
</configuration>

Unix シェルと同様に、logback.xml では${} 内の任意の文字列が variable を指定します

上記の logback.xml ファイルを見ると、変数 ${jackrabbit.log}、${jetty.log}、および "${log.level} が参照されていることがわかります。これらの変数は、prepareServerLog() メソッドによって設定されます。jackrabbit-standalone のメイン クラス 2 . コマンド ラインで「-i」または「--cli」オプションを指定しない限り、prepareServerLog() が呼び出されます。-i または --cli を指定して jackrabbit を呼び出していますか?

とにかく、SLF4J によって出力されたすべてのメッセージと、jackrabbit-standalone を起動するために使用しているコマンドをここに投稿すると役立ちます。

于 2013-04-09T09:07:27.977 に答える