【问题标题】:How would I robustly log binary or XML using slf4j/log4j/java.util.logging?如何使用 slf4j/log4j/java.util.logging 稳健地记录二进制文件或 XML?
【发布时间】:2023-04-07 14:18:01
【问题描述】:

在做了多年的日志记录之后,我现在已经到了需要能够对日志文件进行后处理的地步,其长期目标是使用日志文件作为“传输介质”,允许我保存对象等。人。所以我可以重播后端请求。为此,我需要将对象持久化为可记录的形式。

Sun 推荐的执行此操作的方法是使用 java.beans.XMLEncoder 创建一个 XML sn-p,我对此非常满意,但问题是它被发送到一个 UTF-8 编码的 OutputStream,包括一个 UTF-8 标头,并且 OutputStreams 是面向字节的。日志文件是面向字符的(字符串),并且日志文件通常以该平台的默认编码进行编码。我们的 XML 可能包含任何 Unicode 字符。

我需要一种强大的方法来处理这个问题,并且更喜欢生成人类可读文件的方法。

我考虑过将 XML OuptutStream 转换为字符串,删除不可用的标头,然后展平为 ASCII(将任何非 ASCII 字符编码为数字实体)。我也考虑过使用 XML 转换,但我有一种直觉,这将需要比我希望记录器做的更多的资源。

建议?

【问题讨论】:

  • 你使用什么协议与后端通信?
  • 供应商特定协议,不是 JDBC 或类似协议。

标签: java xml logging xml-serialization


【解决方案1】:

更多的是提示而不是真正的答案:也许可以查看 logback-dev 邮件列表上的 this thread,尤其是来自 Joern Huxhorn(Lilith 的作者)的消息。更一般地说,我认为你应该看看 logback,它是同一作者 Ceki Gülcü 的 log4j 的“继任者”。我认为这就是事情发生的地方。

【讨论】:

  • 谢谢。这也是 Jörn 提到的(但显然当它发生时我已经忽略了)。看来结论是目前大多数后端都没有对二进制数据的合适支持。
猜你喜欢
  • 2018-10-07
  • 2023-03-14
  • 2015-05-13
  • 2015-05-13
  • 1970-01-01
  • 1970-01-01
  • 2012-10-08
  • 2011-01-16
  • 2018-07-10
相关资源
最近更新 更多