2014-02-24 5 views
19

Hallo, ich habe gerade heruntergeladen und konfiguriert log4j-2. Ich bin stecken auf die Anwendung von Farbcodes auf die SlowConsole Konsole Appender. Mein Konsolenappender ist wie unten.log4j 2 Hinzufügen von mehreren Farben zu Konsole Appender

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="WARN"> 
    <Appenders> 
     <Console name="Console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"/> 
     </Console> 
     <Console name="SlowConsole" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=red, ERROR=red, WARN=yellow, INFO=black, DEBUG=green, TRACE=blue}"/> 
     </Console> 
     <File name="File" fileName="C:\log\out.txt"> 
      <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n" /> 
     </File> 
    </Appenders> 
    <Loggers> 
     <logger name="org.abc.ea.web" level="ALL" additivity="false"> 
      <!--Log4j for the WEB MODULE --> 
      <appender-ref ref="SlowConsole"/> 
     </logger> 
     <logger name="org.abc.ea.ejb" level="ALL" additivity="false"> 
      <!--Log4j for the EJB MODULE --> 
      <appender-ref ref="SlowConsole"/> 
     </logger> 
     <Root level="ERROR"> 
      <AppenderRef ref="Console"/> 
      <AppenderRef ref="File" /> 
     </Root> 
    </Loggers> 
</Configuration> 

Ich habe zwei Fragen,

  1. Ich bin neu in log4j, dann ist dies der richtige Weg xml-Konfigurationsdatei zu schreiben?

  2. Wie kann ich jeder Protokollstufe zwei Farbcodes hinzufügen?

    zum Beispiel: DEBUG = grün -> Wille Ausgangslicht grüne Schrift, aber ich brauche es dim und bold

+0

Es wäre toll, wenn Sie bieten könnte ein Patch für die Dokumente! Hilfe wird immer geschätzt! –

Antwort

29

Ich glaube, ich die Lösung gefunden. Ich habe log4j2-core-sources.jar heruntergeladen und die source verfolgt. Sie können es wie folgt schreiben;

<Console name="SlowConsole" target="SYSTEM_OUT"> 
    <PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}"/> 
</Console> 

Ich denke log4j2 documentation und Beispiele dafür können aktualisiert werden müssen.

+0

Found ein Handbuch https://logging.apache.org/log4j/2.x/manual/layouts.html Suche nach 'Highlight {Muster} {Stil}' –

+0

@HarmeetSingh Ja diese Antwort ist jetzt etwas alt. –

2

1 sein darf: Ja, es ist ok! und Sie können einige andere Optionen hinzufügen. siehe http://logging.apache.org/log4j/2.x/manual/configuration.html

2: Sie können ein HTMLLayout für Ihren Dateiappender verwenden.

siehe http://logging.apache.org/log4j/2.x/manual/layouts.html

und http://www.tutorialspoint.com/log4j/log4j_htmllayout.htm

+0

Danke @ Homayoun! Meine zweite Frage ist noch nicht gelöst. Ich benutze einen consoleAppender. Ich möchte, dass meine Logs auf Netbeans, Eclipse oder einem beliebigen STD_OUT angezeigt werden. Also HTMLLayout wird nicht funktionieren, oder? –

+0

hängt es von Ihrem stdout-Viewer ab ... zum Beispiel hat eclipse stdout (output) keinen Sinn für Fettdruck. –

+0

Danke! Es klappt. – sudoz

2

Bei Verwendung der Eclipse-Konsole ist es schön, Fehler in rot und alle anderen Protokolle in schwarz zu sehen. Sie können dies mit Filter tun:

<Appenders> 
    <Console name="ConsoleStdOut" target="SYSTEM_OUT"> 
     <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT"/> 
     <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" /> 
    </Console> 
    <Console name="ConsoleStdErr" target="SYSTEM_ERR"> 
     <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/> 
     <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" /> 
    </Console> 
</Appenders> 
<Loggers> 
    <Root level="info"> 
     <AppenderRef ref="ConsoleStdOut" /> 
     <AppenderRef ref="ConsoleStdErr" /> 
    </Root> 
</Loggers> 
2

Für eine log4j2 farbige Ausgabe, die Frühling-Boot-Standard logback Konsolausgabe ganz in der Nähe aussieht:

<Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true"> 
     <PatternLayout pattern="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} %highlight{${LOG_LEVEL_PATTERN:-%5p}}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=green, DEBUG=green bold, TRACE=blue} %style{${sys:PID}}{magenta} [%15.15t] %style{%-40.40C{1.}}{cyan} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/> 
    </Console> 

Console Screenshot