Как использовать logback-доступ в сочетании с Tomcat 5.5? - PullRequest
2 голосов
/ 12 мая 2009

У меня есть несколько веб-приложений, работающих на сервере Tomcat 5.5, и я работаю над улучшением / обновлением всей системы ведения журналов, используемой во всей системе. У меня уже был некоторый успех с logback-classic. Однако, когда я пытаюсь использовать logback-доступ (то есть доступ к сервлету lbAccessStatus), я получаю следующее исключение:

<b>exception</b>

javax.servlet.ServletException:
  Wrapper cannot find servlet class
    ch.qos.logback.access.ViewStatusMessagesServlet
  or a class it depends on

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

<b>root cause</b>

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

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

У меня все настроено в соответствии с документами :

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

Похоже, перемещение по библиотекам не помогает. Кажется, что работает logback-classic, это просто logback-доступ, который вызывает проблемы.

Ответы [ 3 ]

1 голос
/ 28 мая 2010

У меня это работает. С maven и logback-classic банки заканчиваются на 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>
0 голосов
/ 27 июля 2009

Если вы добавили logback-доступ в общий каталог / lib, чтобы все jar были там, он должен быть доступен везде Вы пробовали это?

Также в Tomcat 6 было переработано ведение журнала. Возможно ли обновление?

0 голосов
/ 03 июня 2009

Я еще не использовал logback-доступ с tomcat. Я использовал это только с молой ...

Я бы предложил попробовать следующую настройку:

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), так и в своем веб-приложении (ViewStatusMessagesServlet), вы должны добавить его в оба пути классов.

Вы могли бы (и должны?) Также добавить logback-access, logback-classic и logback-core к вашему пути к классам веб-приложений вместо того, чтобы добавлять его к common / lib, делая его доступным для всех веб-приложений.

Надеюсь, это поможет.

...