web-dev-qa-db-fra.com

Empêcher Spring Boot d'imprimer des journaux sur la console

J'utilise Spring Boot pour mon application et j'utilise la consignation par défaut de Spring Boot.

Dans mon application.properties, j'ai ajouté le chemin du fichier pour logging.file,

        logging.file= ${logger_path}

et mon pom.xml contient

       <logger_path>/tmp/app.log</logger_path>

Lorsque je lance l’application, elle imprime les messages de journalisation dans le fichier à /tmp/app.log, mais le problème est qu’elle imprime également les messages de journal sur la console. Je ne comprends vraiment pas pourquoi il imprime sur la console ( même s’il les imprime dans le fichier spécifié ) quand j’ai spécifié un log file.

Existe-t-il une configuration empêchant Spring Spring d’imprimer les messages du journal sur la console? 

11
Karthik

Le démarrage du printemps est fourni avec le consignateur logback intégré, qui est configuré pour imprimer sur la console par défaut.

Vous devez écraser la configuration logback (en fournissant votre propre logback.xml sur le chemin de classe) . Ceci est décrit ici - - section 66.1

Comment désactiver la journalisation de la consignation read here

comme vous pouvez le constater, vous devez fournir la valeur OFF... quelque chose comme:

<configuration>
  <include resource="base.xml" />
   .
   .
  <property name="root.level.console" value="OFF" />
</configuration>

Note: Gardez à l'esprit que l'idée générale ici est que la configuration de la journalisation provenant de spring-boot est minimale. Le but est que vous fournissiez votre propre configuration de journalisation et que vous remplaciez complètement celle existante - par exemple. fournir votre propre configuration de logback avec seulement log file-appender configuré - ceci devrait être votre approche générale.

13
hovanessyan

Incluez file-appender.xml et non console-appender avec la configuration suivante dans logback-spring.xml:

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/defaults.xml" />
        <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${Java.io.tmpdir:-/tmp}}/}spring.log}"/>
        <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
        <root level="INFO">
            <appender-ref ref="FILE" />
        </root>
    </configuration>

Vous devez également ajouter logging.file à votre application.properties

Ceci est conforme à ce qui est mentionné dans la documentation de démarrage de printemps - http://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html

6
panksy2k

J'ai essayé de supprimer la configuration de la console de logback.xml. Mais, il était toujours en train de se connecter à la console. Donc, ce que j'ai fait est que je viens de supprimer l'appender ajouté à la configuration de la journalisation par springboot. Ainsi, nous pouvons arrêter la journalisation springboot dans la console et un fichier journal séparé. Ajoutez les lignes ci-dessous à la fin de votre application. Des ajouts spécifiques sont ajoutés. Votre appender personnalisé ne doit correspondre à aucun de ces noms. Cela a fonctionné pour moi. 

// get instance of your log4j instance
Logger logger = LogManager.getRootLogger();
logger.removeAppender("CONSOLE"); // stops console logging
logger.removeAppender("LOGFILE"); // stops file logging
3
Kaliappan

Une discussion similaire peut être trouvée ici .

Mon logback.xml ressemble à ça:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/defaults.xml" />
  <include resource="org/springframework/boot/logging/logback/file-appender.xml" />

  <root level="INFO">
    <appender-ref ref="FILE" />
  </root>
</configuration>

Juste au cas où vous rencontriez encore un problème: j'ai lu de nombreuses discussions sur ce sujet et cela ne fonctionnait pas du tout pour moi. Malheureusement, j'ai commis une erreur vraiment stupide lorsque j'ai créé le fichier logback.xml pour la toute première fois: un espace a été ajouté au début du nom du fichier. Par conséquent, le fichier n'a jamais été utilisé. Il suffit donc d’examiner à nouveau le nom du fichier, d’ajouter le fichier dans "src/main/resources" et de supprimer toutes les entrées "logging.config" de vos fichiers de propriétés.

1
Maximilian Wollnik

Testé avec la dernière version 1.3.1 et les nouvelles versions, base.xml a été renommé en defaults.xml

Répondez ici

0
Pratap A.K