0

我正在尝试生成一个 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>";
}

这样做的问题是 getTail 在我的 FileHandler 关闭之前不会被调用,因此它仅在关闭时才有效。

我已经关闭它并尝试使用 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>

这感觉应该很简单...

4

1 回答 1

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>
于 2014-02-28T16:04:50.153 回答