2016-06-22 13 views
6

ジャージー2.23でログオンしようとしています。このバージョン以降、クラスLoggingFilterは非推奨です(例:https://jersey.java.net/documentation/latest/logging_chapter.html)。ですから、代わりにLoggingFeatureを使用しなければなりません。 の作業は、registerの方法はResourceConfigでしたが、このマニュアルで説明されています。しかし、最終的にproperty方法が働いた:ジャージのログレベルnew LoggingFeature

client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_SERVER, "WARN"); 

これは警告としてすべてのメッセージを出力します。残念ながら、それはどこにも書かれています(少なくとも私は何も見つけられませんでした)。明らかに、文字列でなければならないときは、値を文字列に変換する方法がないというログメッセージが表示されるため、文字列でなければなりません。今度は、このメッセージをTRACEレベルでログに記録したいので、これを実現するための適切なStringを見つけることができません。 「TRACE」と「FINE」は機能しませんでした。これらの場合は何も記録されません。ジャージーはJULを使用しているので、私はLog4j2をSlf4jBridgeHandlerと一緒に使用することに言及する必要があります。

答えて

8

私はこれを数時間苦労して今日「謎」を究明しています。

多少直感的ですが、LOGGING_FEATURE_LOGGER_LEVEL_SERVERで設定しているレベルは、実際にはログを出力するためにサーバのロガーを設定する必要がある最小レベルです。私は名前に基づいて、これが実際のロガーレベルを設定していると仮定しました。つまり、FINERまたはFINESTに設定すると、より多くの出力が生成されることを意味します。代わりに、特定のレベルが満たされていない限り、単にロギングをオフにするだけです。

例として、WARNINGに設定すると、サーバー/クライアントが少なくともWARNINGレベルを印刷するように設定されている限りログが表示されます。持つjava.util.loggingによって定義されるようなレベルは、次のとおり

SEVERE(最高値)
WARNING
INFO
CONFIG
FINE
FINER
FINEST(最低値)

WARNINGに設定すると(文字通り、WARNは2.23.1の私にとってはうまくいきません)、loデフォルトでは、ログは通常INFOレベルです。

logging.propertiesファイルのデフォルトのログレベルを変更するには、通常は$JAVA_HOME/jre/lib/logging.propertiesです。あなたは、たとえば、ファイルに次の変更を加えることができ、あなたは、もはやあなたのコード内の任意の特別なプロパティを設定する必要はないだろう:

java.util.logging.ConsoleHandler.level = FINEST 
org.glassfish.jersey.test.JerseyTest.level = FINEST 

これに対する明らかな欠点は、それはあなたがここから実行何をもたらすのだろうということですがJDK/JRE。この標準の場所をオーバーライドして別のファイルlogging.propertiesを使用する方法もありますが、コードをどのように実行しているかによって異なりますので、状況に応じて調査します。

一つの例は、Mavenを使用しているときにそれを行う方法を説明し、このスレッドのようになります。Logging level under maven surefire

+0

うわー、それは何も全く直感的ではありません - ありがとう! – Mafro34

+0

うわー、これは私のために私を立ち上げました。私はどれくらいの期間認めません。デフォルトのjdk INFOはすべてを隠していました。あなたが言及したように、ジャージー_SERVERレベルをWARNまたはSEVEREに設定するのは完全に直感的ではありません – ChrisO

関連する問題