一个很好的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可能在将来被替换。 但就目前而言,我们使用它并且效果非常好。