Heim  >  Artikel  >  Java  >  Wie Springboot Logback verwendet, um die Protokollkonfiguration zu implementieren

Wie Springboot Logback verwendet, um die Protokollkonfiguration zu implementieren

WBOY
WBOYnach vorne
2023-05-16 09:07:051403Durchsuche

Übersicht

Standardmäßig verwendet SpringBoot intern Logback als Framework für die Systemprotokollimplementierung, das Protokolle an die Konsole ausgibt und nicht in Protokolldateien schreibt. Bei Konfiguration in application.properties oder application.yml können nur einfache Szenarien, Speicherpfade, Protokollformate usw. konfiguriert werden. Komplexe Szenarien (Unterscheidung zwischen Info- und Fehlerprotokollen, tägliches Erstellen einer Protokolldatei usw.) können nicht erfüllt werden, daher können Sie nur die Konfigurationsdatei logback-spring.xml oder logback.xml anpassen.

Detaillierte Erklärung der Logback-Konfiguration

Lassen Sie uns zunächst das Logback verstehen.

Logback ist hauptsächlich in drei Module unterteilt:

  • logback-core: Es ist das Basismodul der anderen beiden Module

  • logback-classic: Es ist eine Erweiterung des Kernmoduls, gleichbedeutend mit einer verbesserten Version von log4j. Das klassische Modul implementiert die Slf4j-API, sodass es problemlos direkt mit anderen Protokoll-Frameworks ausgetauscht werden kann.

  • logback-access: Integrieren Sie es in den Servlet-Container, um die HTTP-Zugriffsprotokollfunktion bereitzustellen. KLogBack-Konfiguration 1.Application .properties Ich bin darauf gestoßen Ein seltsames Problem. Nachdem die Protokollierung gemäß der obigen Konfiguration konfiguriert wurde, können die meisten Projekte normal ausgeführt und Protokolle in Dateien gespeichert werden. Bei einem Projekt wird jedoch beim Start ein Fehler gemeldet.

  • Das Protokollierungssystem konnte nicht mit der Konfiguration von „classpath:logback-spring.xml“ initialisiert werden.
    java.lang.IllegalStateException: Die Protokollierung der Protokollierung konnte nicht von classpath:logback-spring.xml
        bei org.springframework.boot.logging.logback initialisiert werden .LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:168)
        bei org.springframework.boot.logging.AbstractLoggingSystem.initializeWithSpecificConfig(AbstractLoggingSystem.java:66)
        bei org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:57). )
        bei org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:132)
        bei org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:316)
        bei org.springframework .boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:282)
        bei org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:240)
        bei org.springframework.boot.context.logging .LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:216)
        unter org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
        unter Listener(SimpleApplicationEventMulticaster.java:169 )
        bei org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
        bei org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131)
        bei.org.springframe work.boot.context .event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:85)
        unter org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:66)
        unter .java:1257)
        bei org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120)
        bei org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:114)
        bei .boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners. java:65)
        bei org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:339)
        bei org.springframework.boot.SpringApplication.run(SpringApplication.java:297)
        bei org.springframework.boot.SpringApplication. run(SpringApplication.java:1312)
        bei org.springframework.boot.SpringApplication.run(SpringApplication.java:1301)
        bei cn.piesat.ScanningApplication.main(ScanningApplication.java:18)
    Verursacht durch: ch.qos. logback.core.joran.spi.JoranException: Parser-Konfigurationsfehler ist aufgetreten
        bei ch.qos.logback.core.joran.event.SaxEventRecorder.buildSaxParser(SaxEventRecorder.java:89)
        bei ch.qos.logback.core.joran. event.SaxEventRecorder.recordEvents(SaxEventRecorder.java:57)
        bei ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:151)
        bei ch.qos.logback.core.joran.GenericConfigurator.doConfigure( GenericConfigurator.java:110)
        bei ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53)
        bei org.springframework.boot.logging.logback.LogbackLoggingSystem.configureByResourceUrl(LogbackLoggingSystem.java:188)
        bei org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:165)
        ... 22 weitere
    Verursacht durch: org.xml.sax.SAXNotSupportedException: Funktion: http://xml.org/ sax/features/external-general-entities
        bei org.apache.crimson.parser.XMLReaderImpl.setFeature(XMLReaderImpl.java:211)
        bei org.apache.crimson.jaxp.SAXParserImpl.setFeatures(SAXParserImpl.java:143)
    bei org.apache.crimson.jaxp.SAXParserImpl.7e51f00a783d7eb8f68358439dee7daf(SAXParserImpl.java:126)
        bei org.apache.crimson.jaxp.SAXParserFactoryImpl.newSAXParserImpl(SAXParserFactoryImpl.java:113)
        bei Sohn. 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>

Das obige ist der detaillierte Inhalt vonWie Springboot Logback verwendet, um die Protokollkonfiguration zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen