0

我正在 Weblogic 10.3.3 上构建 web 服务,并且正在使用 servlet 过滤器将请求记录到数据库。我不希望过滤器减慢对 web 服务的调用。所以我实际上有两个问题。

1)过滤器,或者我可以让过滤器在单独的线程上进行日志记录吗?如果是这样怎么办?

2)有没有一种方法可以动态打开或关闭过滤器而无需重新部署代码。

谢谢

4

2 回答 2

5
  1. 过滤器由分配给您的请求的线程执行。如果您愿意,您可以创建一个 FutureTask 来进行日志记录,但是过滤器中没有内置任何东西可以让您做这样的事情。如果您使用的是 Log4J,您可以登录到队列并以这种方式卸载您的应用程序。
  2. 过滤器是在 web.xml 中添加的,因此您不能将它们关闭或以这种方式关闭。如果里面有一个 JMX bean 可以完成这项工作,也许您可​​以使用 JMX 控制台来关闭和打开它的功能。

您可能在这里犯了过早的优化。如果你记录或过滤东西会成为一个问题,我会等到我有证据证明它之前我会开始重新设计来修复它。

于 2010-10-15T17:37:36.227 回答
0

很多日志软件都支持“异步日志”,其中一个日志事件非常迅速地放入队列中,然后一个单独的线程尽快将它们写入持久存储。这里的缺点是,如果您的应用程序在事件仍在队列中时崩溃,您更有可能丢失消息。总体开销也略高,因为您有多个线程相互协调。

此外,许多日志框架都有一个“监视配置”选项,可以定期检查配置文件。这允许您在“热”系统上启用或禁用记录器。

您使用的是什么日志库?

于 2010-10-15T17:54:39.327 回答