2017-09-19 6 views
0

J'utilise Tomcat (7.0.70) + guérite (à la fois sentry et sentry-spring) + avec le fichier juillet logging.properties suivant WEB-INF/classes:Sentry.io + Tomcat + juillet: tous les journaux sont envoyés à sentry

handlers = java.util.logging.FileHandler,java.util.logging.ConsoleHandler,io.sentry.jul.SentryHandler 

# Default global logging level. 
# Loggers and Handlers may override this level 
.level = INFO 

#Format 
java.util.logging.SimpleFormatter.format = %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$-8s --- %2$-100s : %5$s%6$s%n 

# Handlers 
# ----------------------------------------- 

# --- ConsoleHandler --- 
# Override of global logging level 
java.util.logging.ConsoleHandler.level = FINE 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 

# --- FileHandler --- 
java.util.logging.FileHandler.level = FINE 
java.util.logging.FileHandler.pattern = ${catalina.base}/logs/application.%g.log 
java.util.logging.FileHandler.limit = 50000 
java.util.logging.FileHandler.count = 1 
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter 

io.sentry.jul.SentryHandler.level = SEVERE 

Mon problème est que tous les journaux sont envoyés à sentinelle, au lieu de seulement les SEVERE. J'ai également remarqué que si je changeais le .level global il a eu un impact sur lequel les logs ont été envoyés à la sentinelle (c.-à-d. Si je l'ai placé à WARNING, seulement les avertissements sont enregistrés et envoyés à la sentinelle).

Avez-vous une idée de ce que je fais mal?

Merci!

Répondre

0

Avez-vous une idée de ce que je fais mal?

Si je regarde le droit source code, il ne tente pas de lire les paramètres de la LogManager. Vous pouvez étendre SentryHandler et faire lire la sous-classe à partir du LogManager et définir le niveau. Ou vous devez créer du code pour trouver le SentryHandler et définir le niveau.

Si possible, essayez de définir une partie de la configuration dans $CATALINA_BASE/conf au lieu du WEB-INF/classes.

Si vous regardez le source code, les niveaux de l'enregistreur ne sont définis qu'une seule fois dans la méthode addLogger. Le WEB-INF/classes va être chargé dans readConfiguration(ClassLoader). Si un chargement de classe déclenche la création du journal, il peut se produire avant readConfiguration(ClassLoader). Dans ce cas, le niveau de consignation n'est jamais modifié par le WEB-INF/classes logging.properties.

Vous devriez pouvoir déclarer certains des niveaux d'enregistrement dans $CATALINA_BASE/conf et l'installation du gestionnaire dans WEB-INF/classes.

Try printing the logger tree à partir du classloader d'application. Cela peut être aussi simple que d'inclure une servlet avec l'application pour imprimer l'arbre du logger. Peut-être que quelque chose est en train de réinitialiser votre configuration ou que le niveau n'est pas défini sur le gestionnaire.

+0

Intéressant. J'ai fait quelques tests et ajouté la déclaration 'io.sentry.jul.SentryHandler.level = SEVERE' à' logging.properties' dans '$ CATALINA_BASE/conf' mais en vain (pas de changement). Il est un peu difficile de définir le gestionnaire car Tomcat n'a pas de jars 'sentry' dans son classpath. Je vais essayer de les ajouter, même si je vais tirer beaucoup de dépendances –

+0

L'ajout de toutes les dépendances provoque l'erreur de démarrage 'java.lang.ClassNotFoundException: javax.servlet.ServletContainerInitializer', probablement à cause d'un conflit avec certaines bibliothèques intégrées? –

+0

J'ai essayé la plupart des différentes combinaisons - en déclarant tout sauf le gestionnaire dans la 'base' et le reste dans' web-inf', mais en vain. –