web-dev-qa-db-ja.com

slf4j + Java.util.logging:設定方法

Slf4j + Java.util.loggingを使用しようとしています。 logger = LoggerFactory.getLogger(...)およびlogger.warn('...')を介してこれを行うためにJavaソースコードを設定する方法を知っています。

しかし、slf4jの構成をセットアップするためのドキュメントはどこにありますか?私は非常に混乱しています... slf4j + Java.util.loggingでこれを動作させる方法を確認してください。

すなわち:

  • どの.propertiesファイルおよび/またはJVM -Dコマンドライン引数を、構成ファイルを指すように指定する必要がありますか?

  • java.util.loggingの構成ファイルのドキュメントはどこにありますか?

  • slf4jを使用すると、構成ファイルに変更が生じますか? (つまり、Java.util.loggingまたはlog4jを直接使用するのとは異なり、別の方法で宣言する必要があるもの)

32
Jason S

julに関するこのチュートリアル を参照してください:

Java -Djava.util.logging.config.file = myLoggingConfigFilePath

しかし、私は Logback に行くことをお勧めします

13
moritz

Slf4jレイヤーには構成はありません。これは単なるAPIであり、バックエンドは(多かれ少なかれ)実装を提供する必要があります。

Java.util.loggingをslf4jバックエンドとして使用するには、クラスパス上のslf4jディストリビューションのslf4j-jdk14-mumle.jarを用意し、javadocにリストされているマジックを実行して有効にする必要があります。そうでない場合、アクティブなslf4j実装がないことを示すランタイムエラーが発生します。

基本的に、クラスパスにslf4j-api.1.7.7.jarとslf4j-jdk14.1.7.7.jarが必要です。次に、アプリケーションのlogging.propertiesファイルを作成し、システムプロパティ-Djava.util.logging.config.file = {path_to_logging.properties}を設定します

check このチュートリアル out Java logger、log4j、logbackなどの異なるロギングフレームワークでslf4jを構成する方法の例を示します。

2
ylu

SLF4Jを構成しません-プロバイダーをバインドおよび構成する必要があります。 SLF4J専用に構築されたLogbackを使用します。 log4jも使用できます。マニュアルの関連エントリを参照してください。 http://www.slf4j.org/manual.html#binding

2
jabbie

Java同じ目的でログを記録し、ログバックに行きました。実際にSLF4Jでログバックを構成することはありません。logback.xmlをログバック構成でjarのルートに置くだけです。そして、logback-XX.jarをクラスパスに配置します。

<configuration>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

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

これはコンソールにログを記録するための設定ですが、logbackマニュアルにはさらに多くの例があります。

2