web-dev-qa-db-fra.com

Comment désactiver les enregistreurs d'une classe ou d'un package entier?

J'utilise Apache.commons.logging, pour l'instant je voulais utiliser l'implémentation SimpleLog, mais quand on change le niveau, les enregistreurs des bibliothèques sortent. Je veux qu'il l'éteigne. Existe-t-il un moyen simple de modifier le niveau de journalisation pour l'ensemble du package (Log4j peut-il le faire)?
J'ai essayé de régler

org.Apache.commons.logging.simplelog.log.foo = fatal

dans les fichiers de propriétés simplelog pour désactiver (le paramètre fatal est OK) foo logger, mais cela ne fonctionne pas. (foo est un nom d'enregistreur qui apparaît dans la sortie: [INFO] foo - Message).

44
Damian

Dans Log4j, vous pouvez spécifier un niveau de journalisation pour un package, une classe ou un enregistreur spécifié identifié par une chaîne. Vous écrivez simplement ceci dans le fichier log4j.properties:

log4j.logger.<your package> = DEBUG|INFO|OFF|WARN...
91
Arek

Tu devrais utiliser:

log4j.logger.foo = OFF

Veuillez noter que "foo" n'a pas besoin d'être un package ou une classe, mais est une chaîne arbitraire. Nous par exemple avoir un enregistreur nommé "SQL" qui est appelé à partir de nombreuses classes.

17
Daniel

Si vous utilisez Spring Boot, vous pouvez définir sur OFF dans le fichier application.properties. Exemple:

logging.level.org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer=OFF

Référence: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-custom-log-levels

3
Lee Chee Kiam

L'utilisation de SimpleLog de Commons Logging nécessite deux fichiers de configuration, sauf si vous utilisez certaines propriétés système. Les fichiers sont: commons-logging.properties et simplelog.properties. Les propriétés de niveau journal que vous avez indiquées doivent être placées dans simplelog.properties comme:

org.Apache.commons.logging.simplelog.log.foo=warn

où "foo" est le nom de l'enregistreur. Généralement, il s'agit du package ou du package et du nom de classe. Dans l'exemple suivant, tout sous le package com.stackoverflow.utils est défini sur info tandis que com.stackoverflow.servlet.Dispatcher est spécifiquement défini sur avertir :

org.Apache.commons.logging.simplelog.log.com.stackoverflow.utils=info 
org.Apache.commons.logging.simplelog.log.com.stackoverflow.servlet.Dispatcher=warn 

Le fichier commons-logging.properties doit contenir:

org.Apache.commons.logging.Log=org.Apache.commons.logging.impl.SimpleLog

Documentation ici et ici .

1
jt.