2009-06-24 15 views
24

Pozwolę sobie odpowiedzieć na to pytanie, mówiąc, że wyczerpałem Google, a przynajmniej to, czego szukałem. "próg log4j", "kategoria progowa log4j", "kategoria progów aplikacji log4j" itp. Ale naprawdę nie rozumiem wyników, które otrzymuję od Google.próg aplikacji log4j i kategoria

To jest pełna konfiguracja, którą otrzymałem. Nie mogę wymyślić, jak go zmodyfikować, aby odpowiadał moim potrzebom.

<?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> 

Nie rozumiem, w jaki sposób poziom progowy aplikanta jest powiązany z kategoriami. Zobacz, chcę tylko wiadomości com.foo.bar do wyświetlenia na konsoli. Ale wygląda na to, że dostaję o wiele więcej, na przykład, org.jboss.wsf.framework wyrzuca komunikaty DEBUG, mimo że mam kategorię o nazwie pasującej do niej i ustawionej na FATAL.

Jestem pewien, że manipuluję poprawnym plikiem konfiguracyjnym, ponieważ jboss zgłasza, że ​​ponownie wczytał konfigurację po jej zmianie. Jak więc ustawić poziom kategorii/progu w prawo? Jaka jest różnica między progiem a kategorią?

Przykładowe wyjście (snipped). Dlaczego kwarc pojawia się na konsoli, gdy mam ustawiony na 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

Czy możesz wyświetlić rzeczywisty plik log4j (na przykład jak ustawić kategorię org.jboss.wsf) i problematyczne wyjście konsoli? – Yishai

+0

Yishai: Zaktualizowałem pytanie. – Amy

Odpowiedz

25

Aby odpowiedzieć na konkretne pytanie, dlaczego Quartz pokazać się na rejestrowanie, trzeba by zmienić konfigurację Quartz następująco:

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

Atrybut addytywności mówi log4j nadpisać ustawienie głównego i użyć tego tylko dla org.quartz.

W poprzedniej wersji pytania, które zadeklarowałeś, chciałeś tylko, aby wiadomości z tych klas były włączone, aby to zrobić, musisz zacząć od skonfigurowania priorytetu w głównym elemencie, aby zgubić (lub nawet NIE), a następnie loguj tylko te pakiety/klasy, które włączasz jawnie.

Aby odpowiedzieć na pytanie, w jaki sposób próg wchodzi w interakcję z kategorią, zasadniczo pomyśl o tym, że jest to publikacja/subskrypcja. Kategoria określa, co jest publikowane przez program rejestrujący, próg ustawia poziom subskrypcji aplikacji wysyłającej.

Jest to nieco skomplikowane, ponieważ kategoria to nie jedna rzecz, ale raczej hierarchia, więc fakt, że ustawiłeś poziom publikacji na jednej kategorii, nie jest całą historią. Może być nadpisany w hierarchii, tak jak to było w twoim przypadku.

+0

Dziękuję bardzo! – Amy

+0

Znalazłem to pytanie i odpowiedź bardzo mylące. Wydaje mi się, że pytanie to zostało kilkakrotnie zmienione, więc ta odpowiedź jest obecnie dość myląca. Z pewnością jeśli użyję podanego logmlj xml, nie będę otrzymywał żadnych komunikatów Quo INFO lub DEBUG Quartz - są one ograniczone do FATAL. Uwaga: Testowałem to w samodzielnym programie, nie w JBoss, więc nie wiem czy JBoss robi coś sprytnego/innego z log4j. – davidfrancis

+0

@davidfrancis, JBoss prawdopodobnie ustawia poziom roota na coś innego niż w twoim standalone. Myślę, że pytanie i odpowiedź są nadal aktualne. – Yishai

4

Move "< appender-ref ref =" Konsola "/>"> od korzenia do < < kategorii name = "com.foo.bar">.

tj .:

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

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

Z config, aby pokazać konsola nie powinien dostać jakieś komunikaty debugowania więc sprawdzić, czy każdy inny config mogłyby zostać wykorzystane lub jeśli jakiś kod jest programowo zmienić config.

+0

Zaktualizowałem pytanie z pełną konfiguracją i niektórymi przykładowymi danymi wyjściowymi tego, o czym mówię. – Amy

+0

To, że JBoss ponownie ładuje, nie oznacza, że ​​jest używane. Zobacz debugowanie dla true dla głównego elementu log4j, a dane wyjściowe mogą pomóc ci zorientować się, co dzieje się źle. –

+0

Dzięki ...działa dobrze na podstawie tej sugestii. Mój problem został rozwiązany po usunięciu deklaracji aplikacji z tagu . –