我的目标是使用 log4j
将(json 格式的)消息滚动到日志文件中,并使生成的日志文件成为 json 有效的结构。我目前在 log4j.properties
中拥有的是:
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 有效的,因为它们没有右括号,即:
[
{},
{},
关于如何解决此问题并使每个滚动文件都包含我在 CustomLayout
中定义的页眉和页脚,有什么想法吗?
最佳答案
当在 Appender 上调用 close() 时,Log4J 将页脚添加到日志中,如此处所述 ( 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 )。您可能需要手动关闭附加程序才能添加页脚
关于java - log4j DailyRollingFileAppender 不添加页脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37935433/