2009-10-02 6 views
1

J'ai une application Web exécutée sous Tomcat.Tomcat Journalisation en cours d'exécution en tant que service Windows

La journalisation de diverses fonctionnalités est implémentée à l'aide de java.util.logging. Lors de l'exécution de tomcat via startup.bat, les fichiers de journalisation sont créés et enregistrés comme prévu.

Lors de l'exécution en tant que service Windows utilisant le même fichier war, la sortie de la journalisation est virtuellement absente. Il y a une sortie de journal (à peine n'importe) dans stdout.log et stderr.log mais pas ce qui est attendu.

Cela vous semble familier? Quelles mesures avez-vous prises pour le corriger?

Cordialement

+0

Vérifiez les propriétés du service - quelle commande exécute Windows pour lancer Tomcat? –

+0

Le service est lancé en appelant org.apache.catalina.startup.Bootstrap avec l'argument start en mode JVM – FacilityDerek

Répondre

0

Il s'avère qu'il s'agit d'un problème de configuration.

Lorsque démarré à partir de startup.bat, tomcat référencera logging.properties dans le répertoire conf.

Lorsqu'il est démarré en tant que service, jdk/jre/lib logging.properties entre en jeu.

Lors de l'exécution en tant que service Windows, toutes les sorties de la console sont redirigées vers stdout.log dans le répertoire des journaux de tomcat.

Les tentatives de capture de la journalisation dans des fichiers personnalisés avec des fichiers logging.properties personnalisés ont jusqu'à présent échoué.

+1

-1 pour "Lorsqu'il est démarré en tant que service, jdk/jre/lib logging.properties entre en jeu." Utilisez l'application "Monitor Tomcat" pour configurer la journalisation, lors de l'exécution de Tomcat en tant que service Windows. – kgiannakakis

+0

Y at-il un moyen de configurer la journalisation pour utiliser log4j à la place? –

1

stdout et les fichiers journaux stderr devraient avoir été créés dans le répertoire des journaux de votre installation Tomcat.

Pour configurer la journalisation, utilisez l'application "Configurer Tomcat". Vous pouvez définir le niveau d'erreur et l'emplacement des fichiers journaux à cet endroit.

0

Assurez-vous que l'environnement Tomcat est le même dans les deux cas. Vérifiez les chemins et les paramètres dans l'éditeur de service Tomcat. N'utilisez pas la boîte de dialogue des propriétés Windows standard pour les services, mais démarrez tomcat.exe avec //ES//namename est le nom du service.

0

Lorsque tomcat est démarré en tant que service, sa configuration de journalisation par défaut remplace en réalité toute configuration de journalisation spécifique à l'application. Comme Aaron a suggéré que la meilleure façon de définir la configuration est d'utiliser tomcatw // ES // tomcat_service_name, par exemple. tomcat_service_name pourrait être Tomcat5 en fonction de vos préférences d'installation (aussi, utilisez tomcatw, pas tomcat - les deux exécutables peuvent être trouvés dans C: \ Program Files \ Apache Software Foundation \ Tomcat 5.0 \ bin). Ce post explique comment vous pouvez vous assurer que vous utilisez le bon nom de service (s'il n'y a pas de valeurs dans la boîte de dialogue, le nom est probablement incorrect).

Je posterais une image mais je n'ai pas assez de rep. Dans l'onglet VM Java, entrez la configuration dans Options Java, par ex. -Dlog4j.configuration = service.log4j.properties

Le fichier qui contient votre configuration de journalisation peut ensuite être placé dans le répertoire de classes du serveur Tomcat, par ex. C: \ Programmes \ Apache Software Foundation \ Tomcat 5.0 \ server \ classes.

Il existe plusieurs endroits où vous pouvez placer le fichier de configuration de journalisation. J'ai d'abord essayé de spécifier un chemin complet pour le fichier de configuration de journalisation, mais log4j semble ne vérifier que certains chemins. Comme cet état post, placez -Dlog4j.debug comme première ligne dans les options Java et vous pouvez déboguer ce que fait log4j.Le répertoire des classes de serveur est répertorié comme un chemin de recherche possible. Lors de la création de votre fichier log4j.properties, nommez-le autre chose que log4j.properties, par exemple:

service.log4j.properties. Le nommer log4j.properties risque de trouver un fichier log4j.properties spécifique à l'application, qui remplacerait votre configuration, mais qui serait ensuite ignoré par le service tomcat.

Questions connexes