我需要将Log4j登录为二进制格式,以便日志可以轻松地进行机器解释.我知道我可以为此目的使用XML,但不希望关联的文件大小膨胀或解析开销.
整个布局系统似乎本质上是基于字符串的,这意味着我不能使用漂亮的文件滚动appender.LoggingEvent是可序列化的,所以我想自己编写一个二进制文件appender,但我觉得我不应该在这里开辟新的领域.
我错过了一些明显的东西吗
我最近遇到了一个非常类似的问题.我不得不将日志行写成二进制格式,但也想让所有其他的appender正常工作.
我所做的是实现我自己的appender,它扩展了AppenderSkeleton并获取LoggingEvent对象,其中返回的消息getMessage()是我自己的对象.
我还编写了一个实现ObjectRenderer的类,它将调用appender的Layout类,以便将日志对象(我记录的对象)转换为字符串.
然后对于我自己的appender(没有布局),消息被序列化为二进制形式并写入某个字节流.对于其他appender,布局对象调用我的对象渲染器,并将消息序列化为String.
通过这种方式,所有常见的appender工作方式相同,我仍然能够附加到我自己的格式.
综上所述:
logger.info(LogEntry)LogEntry为StringBinaryFormatAppender我不知道有任何现成的解决方案.
log4j 发行版中没有任何内容。
您可以查看http://sourceforge.net/projects/bclf/,但您最终可能会编写自己的Appender并实现doAppend(LogginEvent)。