Log4j不支持二进制日志格式?

Car*_*rlG 7 java log4j

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

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

我错过了一些明显的东西吗

Asa*_*saf 6

我最近遇到了一个非常类似的问题.我不得不将日志行写成二进制格式,但也想让所有其他的appender正常工作.

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

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

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

通过这种方式,所有常见的appender工作方式相同,我仍然能够附加到我自己的格式.

综上所述:

  • 使用这种方式编写自己的日志对象: logger.info(LogEntry)
  • 实现ObjectRenderer转换LogEntryString
  • 使用我自己的扩展AppenderSkeletonBinaryFormatAppender

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


Mik*_*dmo 1

log4j 发行版中没有任何内容。

您可以查看http://sourceforge.net/projects/bclf/,但您最终可能会编写自己的Appender并实现doAppend(LogginEvent)。