一个很好的Java数据库日志追加器?

在我的工作场所,我们编写了一个自定义log4j appender,它将日志消息写入数据库(异步使用专用线程,因此没有性能损失)。 我更喜欢写入日志文件 – 基于数据库的日志更容易查询和分析。

是否有一个开源解决方案来执行此操作(特别是对于log4j或任何其他java记录器)?

我们的appender有一些东西,我想在另一种方法中看到:

  • 记录exception(呃!)
  • 数据库写入来自单独的线程/池

我们的appender支持以下列,我希望在我们找到的任何解决方案中看到所有这些列。

  • LOGID
  • 时间
  • 信息
  • 堆栈跟踪
  • 进程ID
  • 线程ID
  • 机器名称
  • 零件
  • 等级(调试/信息/警告/ …)
  • ThreadName

log4j还提供了一个DBAppender类(log4j需要一组特定的表来使用此appender进行记录)。 http://logging.apache.org/log4j/companions/receivers/apidocs/org/apache/log4j/db/DBAppender.html

这里有一个更新的非Apache jdbc记录器,您可能还想尝试: http : //www.dankomannhaupt.de/projects/index.html

只是好奇,难道不会严重影响托管此类appender的应用程序的性能吗? 即使异步执行,直接登录到关系数据库也是非常昂贵的。

LOG4J不需要自定义appender来写入数据库。 您可以使用与Apache的发行版捆绑在一起的JDBCAppender 。

根据APACHE的文档,此API可能在将来被替换。 但就目前而言,我们使用它并且效果非常好。