デフォルトでslf4jは、jdk(slf4j-jdk14-1.6.1.jar)と共に使用すると、デバッグメッセージをログに記録しません。それらを有効にするにはどうすればよいですか?
公式ドキュメントでも、ウェブでも、それを有効にする方法についての情報も見つかりません。
%JDK_HOME%/ libにファイルを作成し、そのレベルを構成ファイルに定義することに関する情報が見つかりました(ただし失敗しました)。ただし、レベルをコンパイル/実行時に定義して、さまざまなログレベルでIDE=からアプリを実行およびデバッグできるようにします。
設定できる環境変数はありませんか、VM arg?
なぜ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ファイルを交換するだけですべてが構成されています。
ご参考までに:
slf4j SimpleLogger実装を使用している場合は、これを読んでください 。
simpleLogger
がデフォルトのログレベルとしてINFO
を使用していることがわかります。システムプロパティを使用して変更できます。これは、非本番環境で役立ちます。
static {
System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "trace");
}
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のマニュアルです 。
あなたは付け加えられます -Dorg.slf4j.simpleLogger.defaultLogLevel=debug
からVMオプション。
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