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

时间:2010-11-11 18:12:02

标签: java logging log4j

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

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

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

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

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

  • LOGID
  • 时间
  • 消息
  • 栈跟踪
  • 进程ID
  • 线程ID
  • 机器名称
  • 成分
  • 级别(debug / info / warn /...)
  • ThreadName

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您不需要 LOG4J 的自定义附加程序来写入数据库。您可以使用与Apache分发捆绑在一起的JDBCAppender

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