2017-07-14 3 views
2

Je travaille sur un projet Spring Boot et j'ai vu la journalisation avec slf4j et logback. Ce qui suit est un logback-spring.xml que j'ai vu qui enregistre les erreurs à la console en plus d'un fichier:Logback - Où les documents XML sont-ils injectés?

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

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <target>System.out</target> 
     <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
      <level>INFO</level> 
     </filter> 
     <encoder> 
      <pattern>${CONSOLE_LOG_PATTERN}</pattern> 
      <charset>utf8</charset> 
     </encoder> 
    </appender> 

    <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>${LOG_FILE}</file> 
     <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> 
      <fileNamePattern>${LOG_FILE}-%d{yyyyMMddd}.%i</fileNamePattern> 
      <maxFileSize>10MB</maxFileSize> 
      <totalSizeCap>10GB</totalSizeCap> 
     </rollingPolicy> 
     <encoder> 
      <pattern>${FILE_LOG_PATTERN}</pattern> 
     </encoder> 
    </appender> 

    <root level="INFO"> 
     <appender-ref ref="ROLLING"/> 
     <appender-ref ref="STDOUT"/> 
    </root> 

</configuration> 

Ma question est, où faire des choses comme ${CONSOLE_LOG_PATTERN} et ${LOG_FILE} obtenir leurs données réelles lors de la compilation/ou temps d'exécution chaque fois que cela est utilisé? Je suis curieux parce que ${LOG_FILE}-%d{yyyyMMddd}.%i me laisse habituellement avec des journaux nommés comme LOG_FILE_IS_UNDEFINED-201707012.0 ce qui m'amène à la conclusion évidente que LOG_FILE n'est définie nulle part, et je voudrais y remédier.

J'ai vu des ressources comme this, mais elles ne semblent pas fournir suffisamment de détails sur le fonctionnement interne de la façon dont les valeurs sont injectées.

Répondre

2

L'amorçage de démarrage est livré avec une configuration par défaut pour le logback. Le fichier jar a intégré les fichiers de configuration xml pour les différents appenders. Vous pouvez les voir dans le projet GitHub: Default spring-boot logback configuration

Vous pouvez remplacer cette configuration, y compris vos propres fichiers de configuration XML. Configure Logback for logging

Vous obtenez fichier non défini parce que vous avez probablement pas défini la propriété logging.file

+0

Merci, en plus de votre information, je l'ai appris que dans mon projet de démarrage de printemps, nous avons quelques spécifications qui peuvent aider les autres qui trouvent ce. Il y a un 'application- .properties' fichiers pour chaque environnement ainsi que' application- .properties' pour chaque développeur et pour en utiliser un spécifiquement nous ajoutons '-Dspring.profiles.active = ' au Options VM dans la configuration run/debug. A l'intérieur du profil spécifique de l'utilisateur ou de l'environnement, nous définissons des choses comme 'logging.file' et' logging.level. 'pour spécifier la granularité de la journalisation. –