2016-06-21 2 views
1

Моя цель - использовать log4j для вставки (json-форматированного) сообщения в файл журнала и сделать результирующий файл журнала в виде json-valid структуры. То, что я в настоящее время в log4j.properties является:log4j DailyRollingFileAppender не добавляет нижний колонтитул

log4j.rootLogger=INFO, FILE 
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.FILE.Append=true 
log4j.appender.FILE.File=out.log 
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd-HH-mm 
log4j.appender.FILE.layout=com.foobar.CustomLayout 
log4j.appender.FILE.layout.ConversionPattern=%m,%n 

Где CustomLayout выглядит следующим образом:

class CustomLayout extends PatternLayout { 

    @Override 
    String getHeader() { 
     return "[\n" 
    } 

    @Override 
    String getFooter() { 
     return "{}\n]" 
    } 
} 

Однако, в конце моего исполнения, все мои файлы не JSON-недопустимы, поскольку они остаются без закрывающей скобки, а именно:

[ 
{}, 
{}, 

An y идеи о том, как исправить эту проблему и сделать каждый свернутый файл, включают заголовок и нижний колонтитул, который я определил в CustomLayout?

ответ

0

Log4J добавляет нижний колонтитул в журналы, когда в Appender вызывается функция close(), как описано здесь (https://books.google.ch/books?id=vHvY008Zq-YC&pg=PA89&lpg=PA89&dq=log4j+add+footer&source=bl&ots=yj900eYY7F&sig=WcuhzutCtZ5ZBlV6SpB084sVkkI&hl=de&sa=X&ved=0ahUKEwjRvtD5xrjNAhUIShQKHfxnDJ44ChDoAQgfMAE#v=onepage&q=log4j%20add%20footer&f=false). Возможно, вам придется закрыть приложение вручную для добавления нижнего колонтитула

Смежные вопросы