2

我在 Tomcat 5.5 服务器上运行了几个 Web 应用程序,并且我正在努力改进/更新整个系统中使用的整体日志记录系统。我已经在 logback-classic 上取得了一些成功。但是,当我尝试使用 logback-access(即访问 lbAccessStatus servlet)时,我得到了这个异常:

例外

javax.servlet.ServletException:
  Wrapper 找不到 servlet 类
    ch.qos.logback.access.ViewStatusMessagesServlet
  或者它依赖的类

org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
...

根本原因

java.lang.ClassNotFoundException:
  ch.qos.logback.access.ViewStatusMessagesServlet

org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1386)
...

我根据文档进行了所有设置:

  普通/库:
    logback-classic-0.9.15.jar
    logback-core-0.9.15.jar
  服务器/库:
    logback-access-0.9.15.jar

在图书馆四处走动似乎没有帮助。logback-classic 似乎工作正常,只是 logback-access 会导致问题。

4

3 回答 3

1

我已经让它工作了。使用maven 和 logback-classic,jar 以WEB-INF/lib结尾,并且运行良好。仅在部署旧版本的 WAR 时,我才看到相同的错误。

我的pom.xml的依赖项部分的摘录

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>0.9.21</version>
</dependency>

...以及我的web.xml的相关部分:

  <servlet>
    <servlet-name>LogbackViewStatusMessages</servlet-name>
    <servlet-class>ch.qos.logback.classic.ViewStatusMessagesServlet</servlet-class>
  </servlet>
  <!-- see http://localhost:8080/oam-portal-portlets/logs -->
  <servlet-mapping>
    <servlet-name>LogbackViewStatusMessages</servlet-name>
    <url-pattern>/logback</url-pattern>
  </servlet-mapping>
于 2010-05-28T11:20:30.407 回答
0

我还没有使用tomcat的logback-access。我只用它和码头...

不过,我建议尝试以下设置:

common/lib:
  logback-access-0.9.15.jar
  logback-classic-0.9.15.jar
  logback-core-0.9.15.jar
server/lib:
  logback-access-0.9.15.jar
  logback-core-0.9.15.jar

logback-access 具有 logback-core 作为依赖项。由于您在服务器(Valve)和您的 web 应用程序(ViewStatusMessagesServlet)中都使用它,因此您应该将它添加到两个类路径中。

您可以(并且应该?)也将 logback-access、logback-classic 和 logback-core 添加到您的 webapp 类路径中,而不是将其添加到 common/lib,使其可用于所有 webapps。

希望有帮助。

于 2009-06-03T04:47:39.770 回答
-1

如果你也将 logback-access 放在 common/lib 中,那么所有的 jar 都在那里,它应该在任何地方都可用。你试过吗?

在 Tomcat 6 中也重新设计了日志记录。是否可以升级?

于 2009-07-26T21:05:51.273 回答