복붙노트

[SPRING] 봄 부팅 다중 로그 파일

SPRING

봄 부팅 다중 로그 파일

"@ Slf4j"주석이 달린 클래스가있는 스프링 부트 프로젝트에서 특정 클래스에 대해 다른 파일에 기록하려고합니다. 그러나 그것을하는 방법을 이해할 수 없었다. 하나의 logback-spring.xml 파일이 있습니다.이 파일은 다음과 같은 속성 파일에서 참조됩니다.

logging.config= path/to/logback-spring.xml
logging.file=myCurrentLogFile.log

다른 logback-spring.xml 파일을 지금 만들어야합니까? 또는 현재 파일에서 구성 할 수 있으며, 그럴 경우 어떻게 사용할 로거를 선택할 수 있습니까?

해결법

  1. ==============================

    1.다른 로거와 appender를 추가하십시오. 예를 들어 다음 logback.xml을 사용했습니다.

    다른 로거와 appender를 추가하십시오. 예를 들어 다음 logback.xml을 사용했습니다.

    <property name="LOGS_HOME" value="/var/applications/myProject/applogs/" />
    
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>
        </layout>
    </appender>
    
    <appender name="FILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOGS_HOME}myProject_log.log</file>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>
        </encoder>
    
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>${LOGS_HOME}myProject_log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>
    
    <appender name="FILE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOGS_HOME}myProject_audit.log</file>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss};%msg%n
            </Pattern>
        </encoder>
    
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>${LOGS_HOME}myProject_audit.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>
    
    <logger name="com.myCompany.myProject" level="info" additivity="false">
        <appender-ref ref="FILE" />
        <appender-ref ref="STDOUT" />
    </logger>
    
    <logger name="audit-log" level="info" additivity="false">
        <appender-ref ref="FILE-AUDIT" />
        <appender-ref ref="STDOUT" />
    </logger>
    
    <root level="error">
        <appender-ref ref="FILE" />
        <appender-ref ref="STDOUT" />
    </root>
    

    코드에서 다음을 사용하여 로거에 액세스 할 수 있습니다.

    private static Logger audit = LoggerFactory.getLogger("audit-log");
    

    그러면 감사 로그 로거가 생성되고 FILE-AUDIT appender가 사용됩니다.

    "standart"appender는 지정된 패키지에있는 클래스와 함께 사용됩니다.

    private static Logger logger = LoggerFactory.getLogger(MyApplication.class);
    

    이것은 및 obviosly FILE appender를 사용합니다.

  2. ==============================

    2.두 개의 다른 파일을 원할 경우 태그 아래에 다음 코드를 추가해야합니다.

    두 개의 다른 파일을 원할 경우 태그 아래에 다음 코드를 추가해야합니다.

    <File name="FILE-AUDIT-SUIVI" fileName="${LOGS_HOME}myProject_audit.log">
            <PatternLayout>
                <pattern>
                    ${LOGS_HOME}
                </pattern>
            </PatternLayout>
        </File>
    
    <RollingFile name="FileAppender" fileName="${LOGS_HOME}archived/myProject_audit.log"
            filePattern="${LOGS_HOME}archived/myProject_audit.%d{yyyy-MM-dd}.%i.log">
            <PatternLayout>
                <Pattern>${LOGS_HOME}</Pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="10MB" />
            </Policies>
            <DefaultRolloverStrategy max="1" />
        </RollingFile>
    
  3. from https://stackoverflow.com/questions/39103771/spring-boot-multiple-log-files by cc-by-sa and MIT license