Rumah > Java > javaTutorial > Bagaimana untuk menyelesaikan ralat apabila menyepadukan log4j dengan springboot

Bagaimana untuk menyelesaikan ralat apabila menyepadukan log4j dengan springboot

王林
Lepaskan: 2023-05-11 10:07:05
ke hadapan
1858 orang telah melayarinya

    1. Menambah kebergantungan

    1.1 Menambah kebergantungan

    Anda perlu memperkenalkan sokongan kebergantungan untuk log4j versi yang hendak digunakan.

    <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-to-slf4j</artifactId>
            <version>2.11.2</version>
    </dependency>
    Salin selepas log masuk

    1.2. Hapuskan kebergantungan

    springboot mempunyai sokongan terbina dalam untuk log secara lalai, dan kesemuanya perlu dialih keluar, jika tidak, ia akan menjejaskan penggunaan kebergantungan log4j.

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
            <exclusions>
                <exclusion>
                   <groupId>*</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
    </dependency>
    Salin selepas log masuk

    2. Log konfigurasi

    2.1. Rekod pencetakan log

     Konfigurasikan konfigurasi yang berkaitan mengikut keperluan anda sendiri untuk konfigurasi. Terdapat perangkap dalam menggunakan sifat Nama fail disesuaikan. Ia tidak akan dinyatakan dalam fail konfigurasi.

    <?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>
    Salin selepas log masuk

    2.2. Tentukan fail konfigurasi

    Anda juga perlu menentukan konfigurasi dalam fail konfigurasi projek but spring.

    logging:
      config: classpath:log4j.xml
    Salin selepas log masuk

    Lengkapkan konfigurasi keseluruhan log di sini Mulakan projek dan dapatkan objek log melalui pernyataan berikut untuk mencetak log.

    private final Logger LOGGING = LoggerFactory.getLogger(ArticleController.class);
    Salin selepas log masuk

    Tambahan: penalaan log4j dan langkah berjaga-jaga

    Mod log - segerak/tak segerak

    log4j2 menyediakan AsyncAppender, AsyncLogger dan dayakan kaedah tidak segerak global seperti berikut:

    • Mod segerak: Konfigurasi lalai ialah mod segerak, iaitu, tiada AsyncAppender dan AsyncLogger digunakan.

    • Asynchronous global: Konfigurasi dikonfigurasikan dengan cara segerak Global boleh dihidupkan dengan menambahkan parameter permulaan jvm tanpa mengubah konfigurasi dan aplikasi.

    • Campur tak segerak: Gunakan konfigurasi campuran Logger tak segerak dan Logger segerak, dan jangan dayakan tak segerak global, iaitu sebahagian daripada konfigurasi Logger ialah AsyncLogger dan sebahagian lagi Logger.

    Nota menggunakan mod log:

    • Jika tak segerak digunakan, adalah disyorkan untuk menggunakan pelaksanaan AsyncLogger dan bukannya AsyncAppender.

    • Jika anda menggunakan penyegerakan, anda hanya boleh menggunakan salah satu daripada AsyncLogger, AsyncAppender dan global async Anda tidak boleh mengkonfigurasi AsyncAppender dan AsyncLogger pada masa yang sama, atau mendayakan async global apabila async dikonfigurasikan.

    Strategi rolling dan clearing log

    log4j2 menyediakan strategi rolling berasaskan saiz fail dan strategi rolling berdasarkan masa, atau kedua-duanya boleh digunakan bersama-sama , berikut ialah konfigurasi strategi guling berasaskan saiz dan konfigurasi strategi dwi guling berasaskan saiz/masa:

    • Strategi guling berasaskan saiz: guling mengikut saiz, dayakan pemampatan, dan kekalkan paling banyak N Fail

    • Berdasarkan saiz/masa strategi rolling dwi rolling: rolling berdasarkan saiz dan masa, membolehkan pemampatan, mengawal bilangan maksimum log yang disimpan setiap unit masa dan mengawal jumlah masa pengekalan log.

    Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat apabila menyepadukan log4j dengan springboot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Label berkaitan:
    sumber:yisu.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan