2012-02-25 28 views
6

Chcę zalogować "ładnie wydrukowane" XML za pomocą Logback/SLF4J. W tej chwili to, co dostaję w dziennikach, jest całkowicie nieczytelne i muszę otworzyć coś, żeby je przetworzyć. Chcę mieć możliwość konfigurowania rejestrowania dla debugowania (ponieważ chcę widzieć XML tylko w debugowaniu), aby wyprowadzić XML w czytelny dla człowieka sposób.Jak rejestrować tekst wielowierszowy w Logback/SLF4J?

Czy to możliwe?

Odpowiedz

9

Wystarczy dodać przełamane \n w rachunku dziennika:

log.info("Message id: {}\nContents: {}", id, xml); 

UPDATE: W celu całkiem-print XML rzucić okiem na: How to pretty print XML from Java?. Trzeba o tym pamiętać, nie ma potrzeby wykonywania kosztownego formatowania, jeśli XML nie zostanie faktycznie wydrukowany. Dlatego jest to jeden z nielicznych przypadków, w których należy użyć is*Enabled():

if(log.isInfoEnabled()) 
    log.info("Message: {}", prettyFormat(xml)); 
+0

Cóż, po prostu utworzymy 2 linie. Jedna z id i druga z xml. To naprawdę nie jest ładny wydruk ;-) – Krystian

+0

@Krystian: Przepraszam, źle cię zrozumiałem. Spójrz na moją zaktualizowaną odpowiedź. –

+0

Uhh .. Popełniłem fatalny błąd. Wiedziałem, że w odpowiedzi dostaję całkiem wydrukowany XML, jednak wydaje mi się, że czytelnik, którego używałem, to usunięcie wszystkich znaków nowej linii. To nie był problem z logowaniem. Po zmianie kodu w celu przekazania oryginalnej odpowiedzi do rejestratora wszystko zaczęło działać poprawnie. Oceniłem twoją odpowiedź jako poprawną, ponieważ dla ludzi, którzy otrzymają surowy xml, będzie działać dobrze. Dzięki. – Krystian

Powiązane problemy