2012-12-16 9 views
6

私は、パスにslf4j.jarを持つ埋め込みJetty 9を使用しています。デフォルトでは、jettyは膨大な情報を記録します。jetty 9のロギングをプログラマブルにディセーブルにするにはどうすればいいですか?

ログを無効にするか、少なくともログレベルをINFOに変更します。プログラムでこれを行うにはどうすればよいですか(つまり、XML設定ファイルを入れないで)?

+0

なぜXML /プロパティファイルを避けるのですか?それらはログレベルを操作する正しい方法です。ログレベルを変更するために再コンパイルする必要があるため、このためのプログラミングアプローチは悪いです!!!!! – SSR

+0

ユーザーがGUIまたはTUIを使用してレベルを変更する方法を実装していない場合は、あなたは、彼らがそれをどのように使うのか分からない限り、プログラマーがしなければならないことを、ある方法または他の方法で言うことはできません。 – Fallso

答えて

12

slf4jは単にログファサード/ルーティングAPIであるため、直線slf4jを使用してLoggerレベルを設定する方法はありません。以下のような名前空間「org.eclipse.jetty」にログレベルを設定するには、基本となるロギング実装に依存する必要があるだろう

  • SLF4J-simple.jarを使用する場合、およびSimpleLoggerの場合、JVMの初期段階であるSimpleLoggerが初期化されると、プログラムでレベルを設定することはできません。

  • slf4j-log4j.jarを使用する場合は、Log4j specific techniquesを使用してください。

org.apache.log4j.LogManager.getLogger("org.eclipse.jetty").setLevel(Level.WARN); 
  • SLF4J-jdk14.jarを使用して、java.util.loggingの技術を使用している場合。
java.util.logging.LoggerFactory.getLogger("org.eclipse.jetty").setLevel(Level.WARNING); 
  • logback.jarを使用している場合は、logback LoggerにSLF4Jロガーをキャストして、レベルを設定します。
final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger("org.eclipse.jetty"); 
if (!(logger instanceof ch.qos.logback.classic.Logger)) { 
    return; 
} 
ch.qos.logback.classic.Logger logbackLogger = (ch.qos.logback.classic.Logger) logger; 
logbackLogger.setLevel(ch.qos.logback.classic.Level.WARN); 
関連する問題