2012-04-11 8 views
5

Ich versuche, ‚anders‘ Appen basierend auf verschiedenen Ebenen zu schaffen, aber bisher konnte ich nicht einen Weg zu isolieren Protokolliergrade ....Erstellen von unterschiedlichen Protokollen basieren auf Protokollebene in log4j

<category name="com.sample" additivity="false"> 
    <priority value="INFO" /> 
    <appender-ref ref="AllAsync"/> 
    <appender-ref ref="ConsoleAppender"/> 
    </category> 

finden Ich brauche einen Weg, um nur INFO-priorisierte Logs landen zu können, die angehängt werden. Da die Protokollierung der INFO-Ebene auch DEBUG-markierte Logger verwendet, hilft mir das nicht.

Eine andere Sache ist für ‚gleiche‘ Paket, das ich nicht anders Protokollierung Appender definieren könnte:

 <category name="com.sample" additivity="false"> 
      <priority value="INFO" /> 
      <appender-ref ref="AllAsync"/> 
      <appender-ref ref="ConsoleAppender"/> 
      </category> 

    <category name="com.sample" additivity="false"> 
     <priority value="DEBUG" /> 
     <appender-ref ref="AllAsync"/> 
     <appender-ref ref="ConsoleAppender"/> 
     </category> 

Hier habe ich den Fehler so etwas wie ich immer:

log4j:ERROR Attempted to append to closed appender named [AllAsync]. 
log4j:ERROR Attempted to append to closed appender named [ConsoleAppender]. 
log4j:ERROR Attempted to append to closed appender named [ConsoleAppender]. 
log4j:ERROR Attempted to append to closed appender named [ConsoleAppender]. 
+1

Sie können Schwellenwert verwenden, um zu verhindern, dass etwas niedriger als Level X in einer Protokolldatei ist, aber ich glaube nicht, dass es eine Möglichkeit gibt, zu verhindern, dass die Protokollierung in der Protokolldatei höher ist. –

Antwort

2

Sie durch genaue Protokollebene filtern Verwenden eines LevelMatchFilters gemäß dem log4j-Faq und -Wiki.

<filter class="org.apache.log4j.varia.LevelMatchFilter"> 
     <param name="LevelToMatch" value="info"/> 
     <param name="AcceptOnMatch" value="true"/> 
</filter> 

Beispiel here.

Verwandte Themen