web-dev-qa-db-ja.com

jdkを使用したslf4jロギング–デバッグを有効にする方法は?

デフォルトでslf4jは、jdk(slf4j-jdk14-1.6.1.jar)と共に使用すると、デバッグメッセージをログに記録しません。それらを有効にするにはどうすればよいですか?

公式ドキュメントでも、ウェブでも、それを有効にする方法についての情報も見つかりません。

%JDK_HOME%/ libにファイルを作成し、そのレベルを構成ファイルに定義することに関する情報が見つかりました(ただし失敗しました)。ただし、レベルをコンパイル/実行時に定義して、さまざまなログレベルでIDE=からアプリを実行およびデバッグできるようにします。

設定できる環境変数はありませんか、VM arg?

22
Kissaki

なぜDEBUGメッセージを記録しないと思いますか?

log.debug(String)ロギング呼び出しがJava.util.loggingログファイルで終了しないことを意味する場合、FINEレベルでログメッセージを許可するようにlogging.properties構成ファイルを構成する必要があると思います。

グローバルな%JRE_HOME%/lib/logging.propertiesをいじりたくない場合は、コマンドラインで-Djava.util.logging.config.file=logging.propertiesを渡すだけで、ロギングシステムが現在のディレクトリでその構成ファイルを探すようになります。

または、他の(プログラムによる)方法を使用してJava.util.loggingを構成します。以下のチュートリアルを参照してください。

これはSLF4Jの構成とは関係ありません。実際、SLF4Jには構成がなく、JARファイルを交換するだけですべてが構成されています


ご参考までに:

24
Neeme Praks

slf4j SimpleLogger実装を使用している場合は、これを読んでください

simpleLoggerがデフォルトのログレベルとしてINFOを使用していることがわかります。システムプロパティを使用して変更できます。これは、非本番環境で役立ちます。

static {

    System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "trace");
}
9
KingQuercus

Logging.propertiesファイルをアプリケーションのWEB-INF/classesファイルに配置し(またはwarにデプロイしない場合は、Neeme Praksによって識別されたコマンドライン引数を使用します)、Eclipseでプロパティファイルを開いて、パッケージをログに記録し、興味のあるレベルで微調整します。

Logging.propertiesファイルで、ロガーレベルとハンドラーレベルの両方が必要なレベルに設定されていることを確認する必要があります。たとえば、出力をコンソールに送信する場合は、少なくとも次のものが必要です。

#logging.properties file contents

#Define handlers
handlers=Java.util.logging.ConsoleHandler

#Set handler log level
Java.util.logging.ConsoleHandler.level=FINE

#Define your logger level
com.company.application.package.package.level=FINE

#Assign your handler to your logger
com.company.application.package.package.handlers=Java.util.logging.ConsoleHandler

slf4j-jdk14-1.6.1.jar。これにより、Java.util.loggingへのslf4jバインディングが提供されます。これをクラスパスに含める必要がありますが、slf4j api(slf4j-api-1.7.12.jar)クラスパスにも。

私は このリンクのlogging.propertiesファイルの例 が、さまざまなロガーとハンドラーを作成するのに役立ち、どのログがコンソールに送られ、どのログがファイルに送られるかを細かく制御できるようにします:。

そして これはslf4jのマニュアルです

4
Jibby

あなたは付け加えられます -Dorg.slf4j.simpleLogger.defaultLogLevel=debugからVMオプション。

0
Antoine

lombok Slf4jを使用している場合

 package com.space.slf4j;

    import lombok.extern.slf4j.Slf4j;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    /**
     * @author anson
     * @date 2019/6/18 16:17
     */
    @Slf4j
    @RestController
    public class TestController {

        @RequestMapping("/log")
        public String testLog(){
            log.info("#########  info  #########");
            log.debug("#########  debug  #########");
            log.error("#########  error  #########");
            return null;
        }
    }

application.yml

logging:
   level:
      root: debug
0
anson