2009-06-24 7 views
24

私はGoogleを使い果たしたとか、少なくとも私が検索しようとしてきたことを言ってこの疑問を書いてみましょう。 「log4jしきい値」、「log4jしきい値カテゴリ」、「log4jアペンダーしきい値カテゴリ」などですが、私はGoogleから戻ってきた結果を本当に理解できません。log4jアペンダーのしきい値とカテゴリ

これは私が与えた完全な構成です。私は自分のニーズに合わせてそれを修正する方法を理解できません。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<!-- ===================================================================== --> 
<!--                  --> 
<!-- Log4j Configuration             --> 
<!--                  --> 
<!-- ===================================================================== --> 

<!-- $Id: jboss-log4j.xml 62403 2007-04-18 15:26:43Z [email protected] $ --> 

<!-- 
| For more configuration infromation and examples see the Jakarta Log4j 
| owebsite: http://jakarta.apache.org/log4j 
--> 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> 

<!-- ================================= --> 
<!-- Preserve messages in a local file --> 
<!-- ================================= --> 

<appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender"> 
    <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> 
    <param name="File" value="${jboss.server.log.dir}/server.log"/> 
    <param name="Append" value="false"/> 

    <!-- Rollover at midnight each day --> 
    <param name="DatePattern" value="'.'yyyy-MM-dd"/> 

    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/> 
    </layout> 
</appender> 


<!-- ============================== --> 
<!-- Append messages to the console --> 
<!-- ============================== --> 

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> 
    <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> 
    <param name="Target" value="System.out"/> 
    <param name="Threshold" value="DEBUG"/> 

    <layout class="org.apache.log4j.PatternLayout"> 
    <!-- The default pattern: Date Priority [Category] Message\n --> 
    <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] %m%n"/> 
    </layout> 
</appender> 



<!-- ================ --> 
<!-- Limit categories --> 
<!-- ================ --> 

<category name="com.arjuna"> 
    <priority value="FATAL"/> 
</category> 

<category name="com.sun.facelets"> 
    <priority value="ERROR"/> 
</category> 

<category name="jacorb"> 
    <priority value="FATAL"/> 
</category> 

<category name="javax.enterprise.resource"> 
    <priority value="WARNING"/> 
</category> 

<category name="javax.enterprise.resource.webcontainer.jsf"> 
    <priority value="WARNING"/> 
</category> 

<category name="org.apache"> 
    <priority value="FATAL"/> 
</category> 

<category name="org.hibernate"> 
    <priority value="FATAL"/> 
</category> 

<category name="org.jboss"> 
    <priority value="INFO"/> 
</category> 

<category name="org.jboss.ejb3.EJB3Deployer"> 
    <priority value="WARNING" /> 
</category> 

<category name="org.jboss.ejb3.JmxKernelAbstraction"> 
    <priority value="WARNING" /> 
</category> 

<category name="org.jboss.management"> 
    <priority value="FATAL"/> 
</category> 

<category name="org.jboss.serial"> 
    <priority value="FATAL"/> 
</category> 

<category name="org.jboss.wsf.framework"> 
    <priority value="FATAL"/> 
</category> 

<category name="org.jgroups"> 
    <priority value="FATAL"/> 
</category> 

<category name="org.quartz"> 
    <priority value="FATAL" /> 
</category> 
<!-- ======================= --> 
<!-- Setup the Root category --> 
<!-- ======================= --> 

<root> 
    <appender-ref ref="CONSOLE"/> 
    <appender-ref ref="FILE"/> 
</root> 



</log4j:configuration> 

アペンダーの「しきい値」レベルがカテゴリとどのように相互作用するかはわかりません。コンソールで表示されるのはcom.foo.barメッセージだけです。しかし、それよりもはるかに多くなっているようです。たとえば、org.jboss.wsf.frameworkはDEBUGメッセージをダンプしていますが、それに一致する名前のカテゴリがあり、FATALに設定されています。

私は正しい設定ファイルを操作していると確信しています。jbossは、変更後にconfigを再読み込みしていると報告しています。では、どのようにカテゴリ/しきい値レベルを正しく設定するのですか?しきい値とカテゴリの違いは何ですか?

出力例(スナップ)。私がFATALに設定したときに、石英がコンソールに表示されるのはなぜですか?

2009-06-22 00:58:37,666 INFO [org.quartz.plugins.history.LoggingJobHistoryPlugin] Job JobInitializationPlugin.JobInitializationPlugin_jobInitializer execution complete at 00:58:37 06/22/2009 and reports: null 
2009-06-22 01:08:37,669 DEBUG [org.quartz.simpl.SimpleJobFactory] Producing instance of Job 'JobInitializationPlugin.JobInitializationPlugin_jobInitializer', class=org.quartz.jobs.FileScanJob 
2009-06-23 15:44:17,790 INFO [org.jboss.wsf.stack.jbws.NativeServerConfig] 3.0.5.GA 
2009-06-23 15:44:17,868 DEBUG [org.jboss.wsf.framework.deployment.DeploymentAspectManagerImpl] setDeploymentAspects on WSDeploymentAspectManagerEJB 
2009-06-23 15:44:17,868 DEBUG [org.jboss.wsf.framework.deployment.DeploymentAspectManagerImpl] setDeploymentAspects on WSDeploymentAspectManagerEndpointAPI 
+0

本当のlog4jファイル(org.jboss.wsfカテゴリの設定方法など)と問題のあるコンソール出力を表示できますか? – Yishai

+0

Yishai:質問を更新しました。 – Amy

答えて

25

クォーツはログに表示さん、あなたは次のようにクォーツの設定を変更しなければならない理由の具体的な質問に答えるために:

<category name="org.quartz" additivity="false"> 
    <priority value="FATAL" /> 
</category> 

を加法属性は、ルート設定を上書きし、これを使用するのlog4jを伝えますorg.quartzのみです。

以前のバージョンの質問では、これらのクラスのメッセージがオンになっているだけで、ルート要素の優先度を致命的(またはNO)に設定する必要があることを示していました。あなたが明示的にオンにするパッケージ/クラスだけを記録してください。

しきい値がカテゴリとどのように相互作用するかについてのご質問にお答えするには、基本的にそれがパブリッシュ/サブスクライブとして考えてください。カテゴリは、ロガーによって公開される内容を設定します。しきい値は、アペンダのサブスクリプションレベルを設定します。

これは、カテゴリが単一のものではなくむしろ階層であるという事実から少し複雑です。したがって、あなたが1つのカテゴリにパブリッシングレベルを設定したという事実は、全体の話ではありません。あなたの場合のように、階層内で上書きされる可能性があります。

+0

ありがとうございました! – Amy

+0

この質問と回答は非常に混乱しています。私は質問が数回編集されたと思うので、この答えは今かなり誤解を招いています。確かに私が指定したlog4j xmlを使用すると、INFOまたはDEBUG Quartzメッセージが出ることはありません。これらは致命的に制限されています。注:私はJBossではなく、スタンドアロンプ​​ログラムでこれをテストしました。そのため、JBossがlog4jと巧妙なやり方をしていれば、私は気にしません。 – davidfrancis

+0

@ davidfrancis、JBossはおそらくあなたのスタンドアロンのものとは異なる何かにルートレベルを設定します。私は質疑応答はまだ有効だと思います。 – Yishai

4

移動 "<アペンダ-REF REF =" CONSOLE "/>" <ルートから> <カテゴリ名= "com.foo.bar">へ。

すなわち:

<category name="com.foo.bar"> 
    <priority value="DEBUG"/> 
    <appender-ref ref="CONSOLE"/> 
</category> 

<root> 
    <appender-ref ref="FILE"/> 
</root> 

コンソールは、他の設定を使用することができれば任意のデバッグメッセージは非常にチェックするか、いくつかのコードをプログラム的に設定を変更している場合は取得するべきではありません示して設定して。

+0

私は完全な設定といくつかの私が話しているものの出力例で質問を更新しました。 – Amy

+0

JBossがリロードするのは、それが使用されていることを意味するものではありません。 log4jのルート要素については、debug to trueを参照してください。出力が間違っているのを見るのに役立ちます。 –

+0

ありがとうございました...その提案でうまく動作します.. タグからアペンダー宣言を削除した後、私の問題は解決しました。 –

関連する問題