我正在尝试生成一个一个接一个地记录消息的XML日志,例如
<?xml version="1.0" encoding="UTF-8"?>
<log>
<message>Message 1</message>
<message>Message 2</message>
//Next messages to append here
</log>
我看过各种解决方案,但似乎没有一种方法可以按照我的要求工作。 我最接近的是使用以下内容:http://www.vogella.com/tutorials/Logging/article.html
我已经调整它以满足我的需要,即
public String format(LogRecord rec) {
StringBuffer buf = new StringBuffer(1000);
buf.append('\n');
buf.append(formatMessage(rec));
buf.append('\n')
return buf.toString() ;
}
public String getHead(Handler h) {
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<log>";
}
public String getTail(Handler h) {
return "</log>";
}
这个问题是在我的FileHandler关闭之前不会调用getTail,所以它只在关闭时才有效。
我已经关闭它并尝试使用append = true重新打开FileHandler以获取下一条消息,但这(不出所料)会附加到日志的末尾。 例如
<?xml version="1.0" encoding="UTF-8"?>
<log>
<message>Message 1</message>
</log>
<?xml version="1.0" encoding="UTF-8"?>
<log>
<message>Message 2</message>
</log>
感觉它应该非常简单......
答案 0 :(得分:0)
[http://logback.qos.ch/] [logback]是xml格式的最新日志记录系统。 您可以记录错误,调试,跟踪和信息级别信息。 您可以指定每天记录的文件名。 下面提到了一个涵盖这些内容的例子。
<configuration>
<conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/mnt/resource/fe/frontend.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>/mnt/resource/fe/frontend-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 100MB -->
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%date - [%level] - %message%xException%n</pattern>
</encoder>
</appender>
<logger name="play" level="INFO" />
<logger name="application" level="INFO" />
<root level="ERROR">
<appender-ref ref="ROLLING" />
</root>
</configuration>