gpt4 book ai didi

java - Log4j 不支持二进制日志记录格式?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:18:54 26 4
gpt4 key购买 nike

我需要将 Log4j 日志转换为二进制格式,以便可以轻松地对日志进行机器解释。我知道我可以为此目的使用 XML,但不希望关联的文件大小膨胀或解析开销。

整个布局系统似乎本质上是基于字符串的,这意味着我不能使用漂亮的文件滚动附加程序。 LoggingEvent 是可序列化的,所以我正在考虑自己编写一个二进制文件附加程序,但我觉得我不应该在这里涉足新领域。

我是否漏掉了一些明显的东西?

最佳答案

我最近遇到了一个非常相似的问题。我不得不将日志行写入二进制格式,但也想让所有其他附加程序正常工作。

我所做的是实现我自己的 appender,它扩展了 AppenderSkeleton并采取 LoggingEvent getMessage() 返回的消息是我自己的对象的对象。

我还编写了一个实现 ObjectRenderer 的类appender 的 Layout 类将调用它以将日志记录对象(我记录的那个)转换为字符串。

然后对于我自己的 appender(没有布局),消息被序列化为二进制形式并写入某个字节流。对于其他附加程序,布局对象调用我的对象渲染器并将消息序列化为字符串。

通过这种方式,所有常见的追加器都可以正常工作,而且我仍然能够追加到我自己的格式。

总结:

  • 以这种方式编写自己的日志记录对象:logger.info(LogEntry)
  • 实现 ObjectRendererLogEntry 转换为 String
  • 使用我自己的 BinaryFormatAppender 扩展 AppenderSkeleton

我不知道有任何现成的解决方案。

关于java - Log4j 不支持二进制日志记录格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5625439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com