[JAVA] Nach Logback-Dateigröße drehen

Annahme

Logback wird für die Java-Protokollausgabe (Spring Boot) verwendet.

"Ich möchte, dass Sie sich drehen, wenn das Protokoll 20 MB erreicht, und 20 Dateien für die Vergangenheit aufbewahren." Mir wurde gesagt, aber ich wusste überhaupt nicht, wie ich es machen sollte, also habe ich es nachgeschlagen.

logback-spring.xml Ich habe dies unter "src / main / resource" gesetzt und gedreht.

logback-spring.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE logback>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <!--Einstellungen für jede Umgebung-->
    <springProfile name="local">
        <!--Geben Sie das Protokollverzeichnis an. was, wenn/tmp -->
        <property name="LOG_DIR" value="/tmp" />
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!--Name und Pfad der Protokolldatei-->
            <file> ${LOG_DIR}/adg.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
                <!--Dateiname nach der Drehung.".zip"Wenn Sie es anziehen, wird es ohne Erlaubnis komprimiert-->
                <fileNamePattern> ${LOG_DIR}/adg_%i.log</fileNamePattern>
                <!--Maximale Anzahl nach der Datei/Minimum. Nummer zu halten-->
                <minIndex>1</minIndex>
                <maxIndex>20</maxIndex>
            </rollingPolicy>
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <!--Nach Dateigröße drehen-->
                <maxFileSize>20MB</maxFileSize>
            </triggeringPolicy>
            < encoder>
                <!--Protokollausgabeformat-->
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread]  [%file:%line %method] %msg%n</pattern>
            </encoder>
        </appender>
    </springProfile>

    <!--Einstellungen für jede Umgebung(Ich habe versucht, es so zu schreiben) -->
    <springProfile name="prod">
        <!--Geben Sie das Protokollverzeichnis an(Ich habe es in der Umgebung geändert) -->
        <property name="LOG_DIR" value="/var/log" />
・ ・ ・
    </springProfile>

    <!--Protokollstufe-->
    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>
</configuration>

application.properties (Auszug)

application.properties


#Lokale Umgebungseinstellungen
spring.profiles.active=local

Protokollausgabe

Übrigens, wie ich, wie Sie das Protokoll überhaupt ausgeben? Einige Leute sagen das, also machen Sie sich eine Notiz.

LogTestController.java


package jp.adg.fuji.log.controllers;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class LogTestController {
    public void logLog() {
        try {
            //Dies allein gibt Ihnen ein Protokoll
            log.info("Info-Protokoll");
            //Beschreiben Sie den Prozess
        } catch (Exception e) {
            // log.warn()Es gibt auch
            log.error("Fehlerprotokoll", e);
        }
        return;
    }
}

Fehler

・ Ursprünglich mit dem Dateinamen logback.xml erstellt → Bei Verwendung von springProfile tritt ein Fehler auf → Ändern Sie den Dateinamen in logback-spring.xml

-Obwohl ich das Layout-Tag verwendet habe, scheint es veraltet zu sein, also habe ich es in Encoder geändert https://logback.qos.ch/codes.html#layoutInsteadOfEncoder

・ Kopieren und einfügen ohne nachzudenken org/springframework/boot/logging/logback/base.xml Als ich einfügte, war das App-Protokoll auch (ungewollt) in Catalina.out

Andere

Das solltest du auch haben, Es ist besser, jede Umgebung so einzustellen, Ich möchte, dass Sie mir sagen, ob es eine solche Einstellung gibt!

Recommended Posts

Nach Logback-Dateigröße drehen
Über Größenvergleich von compareTo
Liste der Speicherorte der Hosts
Geben Sie das Datum (z. B. JJJJ-MM-TT) in die Protokolldatei ein, die per Logback ausgegeben wird