2012-02-16 13 views
9

Korzystanie java.util.logging.Logger do wyjścia jakiś dziennik konsoli podobnie jak ten:Czy istnieje sposób, aby usunąć linię informacyjną z wyjścia java.util.logging.Logger?

public static void main(String[] args) { 
    Logger logger = Logger.getLogger("test"); 
    logger.info("Hello Wolrd!"); 
} 

wyjście jest:

FEB 16, 2012 10:17:43 AM com.abc.HelloWorld main 
INFO: Hello World. 

To wydaje się być w porządku, jednak ...

Używamy java.util.logging.Logger we wszystkich naszych zadaniach Ant (standard wewnętrzny) i mamy duży projekt mrówki. Wyjście konsoli z pełnego cyklu może być większe niż 300 KB, w którym nasz własny wynik rejestratora wynosi co najmniej 50.

Teraz nie chcę widzieć informacji o czasie, nazwie klasy i metodzie wyników Level.INFO . Również linia informacyjna utrudnia skupienie się na niestandardowych wiadomościach.

Czy istnieje sposób na usunięcie pierwszego wiersza (informacji o sygnaturze czasowej, klasie i metodzie) z każdego wyjścia (lub po prostu z każdego wyjścia na Level.INFO)?

+1

@ziesemer Nice. Utwórz formatter, ustaw go na program obsługi, dodaj program obsługi do rejestratora i ustaw program rejestrujący tak, aby nie korzystał z funkcji obsługi rodzica. Awans na pomoc ~ – coolcfan

Odpowiedz

6

Zobacz How do I get java logging output to appear on a single line?. Jednak jedyną różnicą jest usunięcie pierwszego wiersza zamiast wstawiania go do jednej linii.

tylko to zrobić dla INFO poziomach, rozszerzenie formatowania, które chcesz zmodyfikować warunkowo (np SimpleFormatter) i zastąpić metodę format. Można zrobić coś takiego:

public String format(LogRecord record){ 
    if(record.getLevel() == Level.INFO){ 
    return record.getMessage() + "\r\n"; 
    }else{ 
    return super.format(record); 
    } 
} 

jeśli robisz to tylko dla INFO, prawdopodobnie nie potrzebują „info:” prefiksu - ale można go dodać ponownie, jeśli chcesz.

+0

Po przeczytaniu javadoc ... Muszę powiedzieć, że nienawidzę narzędzia logowania java. Jeśli chcę zrobić handler'a stosowanego tylko do Level.INFO, muszę rozszerzyć Handler. I do tego nie mogę używać Handler nadrzędnego dla Level.SEVERE, więc muszę dodać kolejny handler ... – coolcfan

+0

Co jest jednym z powodów, dla których używam SLF4J i logback wszędzie tam, gdzie to możliwe ... – ziesemer

+0

OK ... Dobra aktualizacja. – coolcfan

Powiązane problemy