Pytanie Jak zmienić kolor rejestrowania danych wyjściowych log4j [duplicate]


To pytanie już zawiera odpowiedź:

Obecnie pracuję nad projektem Java i używamy rejestrowania. Po utworzeniu dziennika jest zawsze drukowany zwykłym czarnym tekstem, niezależnie od poziomu rejestrowania (INFO, ERROR itp.)

Jak mogę nadpisać kolor tych wyjść, na przykład wszystkie logi ERROR będą czerwone, podczas gdy wszystkie dzienniki WARN będą pomarańczowe itp.

Dzięki

EDIT: Udało mi się pobrać plik ANSIColorLayout, a moje log4j.properties odnosi się teraz do niego. Jednak otrzymuję następujące błędy:

log4j:WARN No such property [all] in org.apache.log4j.ConsoleAppender.
log4j:WARN No such property [reset] in org.apache.log4j.ConsoleAppender.
log4j:WARN No such property [stacktrace] in org.apache.log4j.ConsoleAppender.
log4j:WARN No such property [info] in org.apache.log4j.ConsoleAppender.
log4j:WARN No such property [error] in org.apache.log4j.ConsoleAppender.
log4j:WARN No such property [defaultcolor] in org.apache.log4j.ConsoleAppender.

Mój plik log4j.properties wygląda następująco:

log4j.rootLogger = DEBUG, CA, FA

log4j.appender.CA = org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout = balle.logging.ANSIColorLayout
log4j.appender.CA.layout.ConversionPattern=%-5p [%d{MM-dd-yyyy HH:mm:ss}] %c - %m%n
log4j.appender.CA.all=\u001B[1;37m log4j.appender.A1.fatal=\u001B[1;31m
log4j.appender.CA.error=\u001B[0;31m log4j.appender.A1.warn=\u001B[1;33m
log4j.appender.CA.info=\u001B[0;37m log4j.appender.A1.debug=\u001B[0;36m
log4j.appender.CA.reset=\u001B[1;37m
log4j.appender.CA.stacktrace=\u001B[0;31m
log4j.appender.CA.defaultcolor=\u001B[1;37m

Domyślam się, że mam używać mojego własnego programu ConsoleAppender? Czy ktoś ma jakieś pomysły?

Dzięki


12
2018-02-20 19:35


pochodzenie




Odpowiedzi:


Możesz pobrać jeden z różnych ANSIColorLayout.java realizacja. Te "rejestratory kolorów" działają poprzez rozszerzenie klasy PatternLayout.

Następnie możesz po prostu zrobić coś takiego w swoim log4j conf:

og4j.appender.stdout.layout=com.acme.ANSIColorLayout

Oto link do jednego ANSIColorLayout.java gotowy do użycia:

http://code.google.com/p/a-distributed-file-system/source/browse/trunk/DistributedFileSystem/ui/net/dfs/ui/ANSIColorLayout.java


6
2018-02-20 19:47



Jeśli link zostanie zerwany, możesz włączyć Google "ANSIColorLayout rozszerza PatternLayout" a znajdziesz inne linki:) - TacticalCoder
To może wydawać się głupie pytanie, ale jak mogę edytować log4j conf, aby użyć klasy kolorów? Nie jestem pewien, czy to mam? - Dan_Dan_Man
@Dan_Dan_Man: zależy to od rodzaju pliku conf log4j, którego używasz. Dodałem linię, która pozwala zmienić stdout wyjście do korzystania z rejestratora kolorów. - TacticalCoder
Chodzi o to, że dla każdej klasy używamy rejestrowania, importujemy org.apache.log4j.Logger. Następnie tworzymy zmienną LOG i używamy jej do drukowania różnych komunikatów logów. Czy dodajemy tę linię do każdej klasy, w której korzystamy z rejestrowania? - Dan_Dan_Man