Visualizza solo le istruzioni di debug Log4j selezionate
Domanda
È possibile visualizzare solo quelle istruzioni nella console, che contengono determinate parole.
Per eq:
logger.debug ( "java: hello " );
logger.debug ( "groovy: hello " );
logger.debug ( "ruby: hello " );
Ora, eseguendo una configurazione o qualsiasi altra cosa, tutte le istruzioni che iniziano con groovy: dovrebbero essere visualizzate.
Soluzione
Desideri utilizzare log4j StringMatchFilter che fa parte del " extra " pacchetto dalla registrazione di Apache.
Ecco un breve esempio trovato online :
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="CustomAppender" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="custom.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="5000KB"/>
<param name="maxBackupIndex" value="5"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p - %m%n" />
</layout>
<filter class="org.apache.log4j.varia.StringMatchFilter">
<param name="StringToMatch" value="Here is DEBUG" />
<param name="AcceptOnMatch" value="true" />
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
</appender>
<root>
<appender-ref ref="CustomAppender"/>
</root>
</log4j:configuration>
Altri suggerimenti
Che ne dici di creare i tuoi livelli doganali
public class Groovy extends Level
E quindi nel file delle proprietà del registro impostare tali livelli come configurazione
Spero che questo aiuti, David.
Uno può usare diversi logger (diciamo un logger per i messaggi "java" e uno per i messaggi "groovy"). La configurazione di Log4J può essere impostata con livelli diversi per ciascun logger.
Puoi leggere di più qui
Uno potrebbe usare uno strumento per filtrare i messaggi. Per Windows puoi farlo con BareTail . Il filtro dei messaggi è possibile solo con la versione pro (a pagamento). Forse ci sono altri strumenti che fanno lo stesso lavoro.
I marcatori SLF4J sono forse adatti ai tuoi scopi. Tutti i metodi di stampa come debug e informazioni in org.slf4j.Logger
ammette un Marker come primo parametro . Inoltre, logback-classic, un'implementazione nativa di SLF4J, viene fornita con un filtro chiamato MarkerFilter
che penso faccia quello che vuoi.