2009-05-12 14 views
2

J'ai plusieurs applications Web fonctionnant sur un serveur Tomcat 5.5, et je travaille à améliorer/mettre à jour le système de journalisation global utilisé dans tout le système. J'ai déjà eu un certain succès avec logback-classic. Cependant, lorsque je tente d'utiliser logback accès (accès au servlet lbAccessStatus), je reçois cette exception:Comment utiliser l'accès au journal en combinaison avec Tomcat 5.5?

 
exception 

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) 
... 

root cause 

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

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

J'ai tout mis en place selon la docs:

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

mouvement autour de la les bibliothèques ne semblent pas aider. logback-classic semble fonctionner correctement, c'est juste l'accès au logback qui pose problème.

Répondre

0

Je n'ai pas encore utilisé l'accès au logback avec tomcat. Je ne ai utilisé avec la jetée ...

Je vous suggère d'essayer la configuration suivante, cependant:

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 accès a logback-core comme une dépendance. Puisque vous l'utilisez à la fois dans le serveur (le Valve) et dans votre webapp (le ViewStatusMessagesServlet), vous devez l'ajouter aux deux chemins de classes.

Vous pouvez (et devez?) Également ajouter logback-access, logback-classic et logback-core à votre classe webapp au lieu de l'ajouter à common/lib, en le rendant accessible à toutes les applications Web.

Espérons que ça aide.

-1

Si vous mettez aussi l'accès au journal en common/lib, donc tous les jars sont là, ils devraient être disponibles partout. Avez-vous essayé cela?

La journalisation a également été retravaillée dans Tomcat 6. La mise à niveau est-elle possible?

+0

Répandre autour des pots si l'enfer se sent comme dll . Besoin de déboguer avec les détails du chargeur de classe. – whatnick

+0

whatnick, dans ce cas, s'il vous plaît écrivez votre meilleure réponse. –

1

Je l'ai fonctionné. Avec maven et logback-classique les pots se terminent par WEB-INF/lib et cela fonctionne bien. J'ai vu la même erreur uniquement lors du déploiement de l'ancienne version de mon WAR.

extrait des dépendances section de mon 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> 

... et une partie pertinente de mon 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>