Heim > Java > javaLernprogramm > Hauptteil

So beheben Sie den Fehler bei der Integration von log4j mit Springboot

王林
Freigeben: 2023-05-11 10:07:05
nach vorne
1841 Leute haben es durchsucht

    1. Abhängigkeiten hinzufügen

    1.1. Das Hinzufügen von Abhängigkeiten

    erfordert die Einführung der log4j-Abhängigkeitsunterstützung.

    <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-to-slf4j</artifactId>
            <version>2.11.2</version>
    </dependency>
    Nach dem Login kopieren

    1.2. Abhängigkeiten beseitigen

    Springboot verfügt standardmäßig über eine integrierte Unterstützung für Protokolle und alle müssen entfernt werden, da dies sonst Auswirkungen auf die Verwendung von log4j-Abhängigkeiten hat. 2. Konfigurationsprotokoll Wird angepasst, es gibt keine Anforderungen, diese werden in der Konfigurationsdatei angegeben.

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
            <exclusions>
                <exclusion>
                   <groupId>*</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
    </dependency>
    Nach dem Login kopieren

    2.2. Geben Sie die Konfigurationsdatei an

    Sie müssen die Konfiguration auch in der Projektkonfigurationsdatei von Spring Boot angeben.

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration  scan="true" scanPeriod="10 seconds">
        <contextName>beordie</contextName>
        <property name="path" value="E:\file\javalearn\blog\src\main\resources\logs" />
        <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
        <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
        <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
        <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>info</level>
            </filter>
            <encoder>
                <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
                <charset>UTF-8</charset>
            </encoder>
        </appender>
    
        <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${path}/debug.log</file>
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${log}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <maxHistory>15</maxHistory>
            </rollingPolicy>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>debug</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
    
        <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${log}/info.log</file>
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${log}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <maxHistory>15</maxHistory>
            </rollingPolicy>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>info</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
    
        <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${log}/warn.log</file>
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${log}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <maxHistory>15</maxHistory>
            </rollingPolicy>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>warn</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
    
        <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${log}/error.log</file>
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${log}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <maxHistory>15</maxHistory>
            </rollingPolicy>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
    
        <springProfile name="dev">
            <logger name="com.beordie" level="debug"/>
        </springProfile>
    
        <root level="info">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="DEBUG_FILE" />
            <appender-ref ref="INFO_FILE" />
            <appender-ref ref="WARN_FILE" />
            <appender-ref ref="ERROR_FILE" />
        </root>
    </configuration>
    Nach dem Login kopieren

    Vervollständigen Sie hier die Gesamtkonfiguration des Protokolls. Starten Sie das Projekt und rufen Sie das Protokollobjekt über die folgende Anweisung ab, um das Protokoll zu drucken.

    logging:
      config: classpath:log4j.xml
    Nach dem Login kopieren

    Hinzugefügt: log4j-Optimierung und Vorsichtsmaßnahmen

    Protokollmodus – synchron/asynchron

    log4j2 bietet AsyncAppender und AsyncLogger sowie globale Asynchronität, die Öffnungsmethode ist wie folgt:

    Synchronmodus: Die Standardkonfiguration ist synchroner Modus, d. h. es werden kein AsyncAppender und AsyncLogger verwendet.

      Global asynchron: Die Konfiguration ist synchron konfiguriert und kann durch Hinzufügen von JVM-Startparametern aktiviert werden, ohne die Konfiguration und Anwendung zu ändern.
    • Gemischte Asynchronität: Verwenden Sie eine gemischte Konfiguration aus asynchronem Logger und synchronem Logger und aktivieren Sie nicht die globale Asynchronität, d. h. ein Teil der Logger-Konfiguration ist AsyncLogger und ein Teil ist Logger.
    • Hinweise zur Verwendung des Protokollmodus:

    Wenn Sie asynchron verwenden, wird empfohlen, die AsyncLogger-Implementierung anstelle von AsyncAppender zu verwenden.

      Wenn Sie die Synchronisierung verwenden, können Sie nur AsyncLogger, AsyncAppender und globale Asynchronisierung verwenden. Sie können AsyncAppender und AsyncLogger nicht gleichzeitig konfigurieren oder globale Asynchronisierung aktivieren, wenn Asynchronisierung konfiguriert ist.
    • Log-Rolling- und Clearing-Strategie

    • log4j2 bietet eine dateigrößenbasierte Rolling-Strategie und eine zeitbasierte Rolling-Strategie, oder beide können zusammen verwendet werden. Hier sind die größenbasierte Rolling-Strategie-Konfiguration und die Größe/. zeitbasierte Dual-Rolling-Richtlinienkonfiguration:

    Größenbasierte Rolling-Richtlinie: Roll nach Größe, Komprimierung aktivieren und bis zu N Dateien beibehalten

      Dual-Roll basierend auf Größe/Zeit Rolling-Richtlinie: Roll nach Größe und Zeit, Komprimierung aktivieren, Einheiten Steuern Sie die maximale Anzahl der Protokolle, die innerhalb eines Zeitraums aufbewahrt werden, und steuern Sie die gesamte Protokollaufbewahrungszeit.

    Das obige ist der detaillierte Inhalt vonSo beheben Sie den Fehler bei der Integration von log4j mit Springboot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!