programing

Logback-test.xml 구성에서 하나의 로그 파일이 아닌 두 개의 로그 파일을 생성하시겠습니까?

css3 2023. 9. 2. 08:42

Logback-test.xml 구성에서 하나의 로그 파일이 아닌 두 개의 로그 파일을 생성하시겠습니까?

실행을 중지할 때spring-boot애플리케이션 생성되는 로그 파일은 하나가 아니라 두 개입니다(하나가 예상됨).

내게 무슨 문제가 있습니까?Logback-test.xml아래 파일이 원인일 수 있습니까?

logback-test.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <timestamp key="myTimestamp" datePattern="yyyy-MM-dd'_'HH-mm-ss.SSS"/>

    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <logger name="org.springframework.web" level="INFO"/>

    <!-- Send debug messages to System.out -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- By default, encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS}  - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <file>C:\path\to\my\file\myLog-${myTimestamp}.log</file>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d{yyyy-MM-dd_HH:mm:ss.SSS} - %msg%n</Pattern>
        </encoder>

        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <FileNamePattern>myLog.%i{yyyy-MM-dd_HH:mm:ss.SSS}}.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>
        </rollingPolicy>

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>2MB</MaxFileSize>
        </triggeringPolicy>

    </appender>

    <logger name="com.my.package" level="INFO" additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </logger>

    <!-- By default, the level of the root level is set to DEBUG -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

생성되는 두 개의 파일은 다음과 같습니다.

myLog-2016-04-22_15-47-30.126.log

and

myLog-2016-04-22_15-47-30.922.log

타임스탬프는 구성을 구문 분석할 때 생성됩니다.Spring Boot은 시작하는 동안 로그백을 한 번 다시 초기화하므로 두 개의 다른 타임스탬프가 생성되므로 두 개의 파일이 생성됩니다.

를 사용할 수 있습니다.timeReferene="contextBirth"구성에서 일정한 타임스탬프를 얻을 수 있습니다.그 이후로LoggerContext파괴된 것이 아니라 재설정된 것입니다. 이 작업:

<timestamp key="myTimestamp" timeReference="contextBirth" datePattern="yyyy-MM-dd'_'HH-mm-ss.SSS"/>

어떻게 지내십니까?logging.config부동산 룩?경로 지정(또는 속성 파일에서 속성이 누락됨)이 문제일 수 있습니다.예를 들어, 다음과 같이 보여야 합니다.

logging.config=classpath:logback-test.xml

application-test.properties.

다른 가능성은 두 개의 활성 프로필이 있을 수 있습니다.예를 들어 당신의test프로필 및default하나. 이 경우 로그백의 조건부 구성으로 해결할 수 있습니다.

자세한 내용은 답변을 참조하십시오.또한 해당 답변에 대한 마지막 설명을 참조하십시오. 스프링 부트 1.3에는 로그백을 사용하여 여러 프로파일을 처리하는 것과 관련된 몇 가지 새로운 기능이 포함되어 있습니다.

http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/ #boot-syslog-logback-extensions

이 문제는 다음 라인과 관련이 있을 수 있습니다.

<include resource="org/springframework/boot/logging/logback/base.xml"/>

포함된 파일의 이 버전은 다른 파일에 포함되어 있으며 그 중 하나에 파일 추가기가 있습니다.사용자가 직접 추가 프로그램(파일 및 콘솔)을 정의하고 있으므로 Spring Boot 기본 파일을 포함할 필요가 없습니다.

이것이 효과가 있습니까?

<appender name="FILE" class="ch.qos.logback.core.FileAppender"">

    <file>C:\path\to\my\file\myLog-${myTimestamp}.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>%d{yyyy-MM-dd_HH:mm:ss.SSS} - %msg%n</Pattern>
    </encoder>

<!--
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <FileNamePattern>myLog.%i{yyyy-MM-dd_HH:mm:ss.SSS}}.log</FileNamePattern>
        <MinIndex>1</MinIndex>
        <MaxIndex>10</MaxIndex>
    </rollingPolicy>
-->
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <MaxFileSize>50MB</MaxFileSize>
    </triggeringPolicy>

</appender>

언급URL : https://stackoverflow.com/questions/36796728/logback-test-xml-configuration-is-producing-two-log-files-instead-of-one