Maison >Java >javaDidacticiel >Comment Springboot utilise Logback pour implémenter la configuration des journaux
Par défaut, SpringBoot utilise en interne la connexion comme cadre pour l'implémentation des journaux système, qui génère des journaux sur la console et n'écrit pas dans les fichiers journaux. S'ils sont configurés dans application.properties ou application.yml, seuls des scénarios simples, des chemins d'enregistrement, des formats de journaux, etc. peuvent être configurés. Les scénarios complexes (distinction entre les journaux d'informations et d'erreurs, génération d'un fichier journal chaque jour, etc.) ne peuvent pas être satisfaits, vous ne pouvez donc personnaliser que le fichier de configuration logback-spring.xml ou logback.xml.
Tout d'abord, comprenons la connexion.
logback est principalement divisé en trois modules :
logback-core : est le module de base des deux autres modules
# 🎜 🎜#1.application .properties#🎜🎜 ## Configuration des informations d'impression du journal
logging.config=classpath:logback-spring.xml2.logback-spring.xml
#🎜 🎜#J'ai rencontré un problème étrange après avoir configuré la connexion selon la configuration ci-dessus, la plupart des projets peuvent s'exécuter normalement et enregistrer les journaux dans des fichiers, mais lorsqu'un projet démarre, signalez un problème. erreur.<?mybatis version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <contextName>logback</contextName> <!--输出到控制台--> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter>--> <encoder> <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 日志文件会滚动 --> <!-- 文件路径 --> <file>./logs/gf_scanning.log</file><!-- 当前的日志文件存放路径 --> <!-- 日志滚动策略 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 历史日志文件的存放路径和名称 --> <fileNamePattern>./logs/gf_scanning.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 日志文件最大的保存历史 数量--> <maxHistory>30</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> <!-- 日志文件中日志的格式 --> </encoder> </appender> <root level="info"> <appender-ref ref="console"/> <appender-ref ref="file"/> </root> </configuration>Situation anormale
Le système de journalisation n'a pas réussi à s'initialiser à l'aide de la configuration de 'classpath:logback-spring.xml'
java.lang.IllegalStateException : impossible d'initialiser la journalisation de journalisation à partir de classpath:logback-spring.xml
sur org.springframework.boot.logging.logback .LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:168)
sur org.springframework.boot.logging.AbstractLoggingSystem.initializeWithSpecificConfig(AbstractLoggingSystem.java:66)
sur org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:57 )
sur org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:132)
sur org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:316)
sur org.springframework .boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:282)
sur org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:240)
sur org.springframework.boot.context.logging .LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:216)
sur org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
sur org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(Simple ApplicationEventMulticaster.java : 169 )
sur org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
sur org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131)
sur org.springframework.boot .contexte .event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:85)
sur org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:66)
sur java.util.ArrayList.forEach(ArrayList.ja va:1257)
sur org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120)
sur org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:114)
sur org.springframework.boot. SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners. java:65)
sur org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:339)
sur org.springframework.boot.SpringApplication.run(SpringApplication.java:297)
sur org.springframework.boot.SpringApplication. run(SpringApplication.java:1312)
sur org.springframework.boot.SpringApplication.run(SpringApplication.java:1301)
sur cn.piesat.ScanningApplication.main(ScanningApplication.java:18)
Causé par : ch.qos. logback.core.joran.spi.JoranException : une erreur de configuration de l'analyseur s'est produite
sur ch.qos.logback.core.joran.event.SaxEventRecorder.buildSaxParser(SaxEventRecorder.java:89)
sur ch.qos.logback.core.joran. event.SaxEventRecorder.recordEvents(SaxEventRecorder.java:57)
sur ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:151)
sur ch.qos.logback.core.joran.GenericConfigurator.doConfigure( GenericConfigurator.java:110)
sur ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53)
sur org.springframework.boot.logging.logback.LogbackLoggingSystem.configureByResourceUrl(LogbackLoggingSystem.java:188)
sur org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:165)
... 22 de plus
Causé par : org.xml.sax.SAXNotSupportedException : fonctionnalité : http://xml.org/ sax/features/external-general-entities
sur org.apache.crimson.parser.XMLReaderImpl.setFeature(XMLReaderImpl.java:211)
sur org.apache.crimson.jaxp.SAXParserImpl.setFeatures(SAXParserImpl.java:143)
sur org.apache.crimson.jaxp.SAXParserImpl.7e51f00a783d7eb8f68358439dee7daf(SAXParserImpl.java:126)
sur org.apache.crimson.jaxp.SAXParserFactoryImpl.newSAXParserImpl(SAXParserFactoryImpl.java:113)
sur org.apache .pourpre. jaxp.SAXParserFactoryImpl.setFeature(SAXParserFactoryImpl.java:141)
at ch.qos.logback.core.joran.event.SaxEventRecorder.buildSaxParser(SaxEventRecorder.java:82)
... 28 more
Disconnected from the target VM, address: '127.0.0.1:64222', transport: 'socket'Process finished with exit code 1
可能是由于jar包冲突,在pom文件中单独引入logback-core的依赖后,问题解决。
<!-- logback 日志 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.1.7</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.7</version> <exclusions> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> </exclusion> </exclusions> </dependency>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!