log4j.propertiesファイルのlog4j.rootLoggerプロパティの重要性は何ですか?このプロパティを使用しないとどうなりますか?


86

ファイル内のlog4j.rootLoggerプロパティの重要性は何log4j.propertiesですか?このプロパティを使用しないとどうなりますか?

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

このプロパティをERRORモードに設定するとどうなりますか。

回答:


94

サムドラグプタは彼の本の中で説明しています1

Loggerオブジェクトは、アプリケーション開発者は、任意のメッセージを記録するために使用する主な目的です。Loggerアプリケーションの特定のインスタンス内で動作するオブジェクトが続く親子階層を

次の構成がある場合:

log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.logger.com.me.proj2=INFO

これは、ロガー階層が最終的にどのように見えるかです:2

木

サムドラグプタは引き続き説明します。

階層の最上位にはルートロガーがあります。ルートロガーは、私たちが思いつく可能性のあるカスタムロガー階層の範囲外に存在します。可能なすべてのロガー階層のルートロガーとして常に存在し、名前空間はありません。他のすべてのアプリケーション固有のLoggerオブジェクトは、ルートロガーの子オブジェクトです。ロガーの親子関係は、同じアプリケーション内で動作するロガーの依存関係を意味します。子ロガーは、ツリーの上位にある親ロガーからプロパティを再帰的に継承できます。通常、子ロガーは親ロガーから次のプロパティを継承します。

  • Level:子ロガーに明示的なツリーレベルが指定されていない場合は、最も近い親のレベル、または階層の上位で再帰的に検出された最初の適切なレベルが使用されます。
  • Appender:ロガーにアペンダーがアタッチされていない場合、子ロガーは最も近い親ロガーのアペンダー、またはツリーの上位で再帰的に検出された最初のアペンダーを使用します。
  • ResourceBundleResourceBundlesロギングメッセージのローカリゼーションに使用されるKey-Valueパターンプロパティファイルです。子ロガーはResourceBundle、その親ロガーに関連付けられているものを継承します。

ノート

1 Samudra Gupta、Pro Apache Log4j、第2版(カリフォルニア州バークレー:Apress、2005)、24-25、ISBN13:978-1-59059-499-5

2 Dominic Mitchell、Loging in Javahttp://happygiraffe.net/blog/2008/09/03/logging-in-java/、2014年5月26日取得。


1
「可能なすべてのロガー階層のルートロガーとして常に存在し、名前空間がありません。」の+1
アジム2016

2
OPのこの質問に対する答えは何ですか-「このプロパティを使用しないとどうなりますか?」??
hagrawal 2016

4
おやおや...ドミニクのページへのリンクの背景を見てください。絶対に読めない。
MasterJoe 2017

@ testerjoe2-そうです、そのきれいな画像は読みづらくなります-人々が白いテキストで黄色の背景を持っていた昔のhtmlのように-あなたの目は出血したくなります!
JGlass 2018

10

答える

このプロパティを使用しないとどうなりますか?

rootLoggerをレベルとアペンダーに設定しないと、警告が表示されます。

たとえば、行を省略またはコメントアウトした場合log4j.rootLogger=DEBUG, stdout、つまり、log4j.propertiesファイルにルートロガーのみが含まれ、追加のロガーが含まれていない場合、ここではルートロガーがコメントアウトされます。

#log4j.rootLogger=DEBUG, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

次のような出力が得られます。

log4j:WARN No appenders could be found for logger (log4jtests.Log4jHelloWorld).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

7

log4j.rootLogger プロパティは、ルートロガーのレベル(ここではDEBUG)とアペンダー(ここではA1)を設定します。これは必須ではありません。ルートロガーにはデフォルトのアペンダーが添付されておらず、アペンダーなしで存在できます。したがって、log4jプロパティファイルには、このプロパティを設定しなくてもかまいません。

ルートロガーは、JavaのObjectクラスと同様に、log4j階層の最上位のロガーです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.