标记中的Java XML日志记录

时间:2014-02-28 15:51:46

标签: java filehandler

我正在尝试生成一个一个接一个地记录消息的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>

感觉它应该非常简单......

1 个答案:

答案 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>