programing

LogBack을 사용한 SpringBoot에서 LOG_PATH_IS_UNDEFINED 폴더 생성

lastmoon 2023. 2. 26. 10:28
반응형

LogBack을 사용한 SpringBoot에서 LOG_PATH_IS_UNDEFINED 폴더 생성

LogBack과 함께 SpringBoot을 사용하고 있으며 yml 파일에서 다음 구성을 사용하고 있습니다.

logging:
    path: C:/var/log/pincode

logging.path Spring 환경변수는 LOG_PATH 환경변수로 전송되고 로그 파일은 올바른 위치에 배치되지만 프로젝트의 루트 디렉토리에는 LOG_PATH_IS_UNDEFINED라는 디렉토리가 생성됩니다.

이는 SpringBoot에서 환경변수로 LogBack을 설정하기 위해 사용되는 단계가 다르기 때문에 발생하는 것으로 보입니다.

17:29:21,325 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
17:29:21,337 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern LOG_PATH_IS_UNDEFINED/catalina.out.%d{yyyy-MM-dd} for the active file
17:29:21,340 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'LOG_PATH_IS_UNDEFINED/catalina.out.%d{yyyy-MM-dd}'.
17:29:21,340 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
17:29:21,343 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Mon Aug 11 17:24:07 BRT 2014
17:29:21,346 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[serverConsole] - Active log file name: LOG_PATH_IS_UNDEFINED/catalina.out
17:29:21,346 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[serverConsole] - File property is set to [LOG_PATH_IS_UNDEFINED/catalina.out]
...
17:29:21,358 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.

그 후 다시 로그백 구성을 시작하지만 이번에는 설정한 경로를 사용합니다.

17:29:21,672 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
17:29:21,673 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - No compression will be used
17:29:21,673 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern C:/var/log/pincode//catalina.out.%d{yyyy-MM-dd} for the active file
17:29:21,674 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'C:/var/log/pincode//catalina.out.%d{yyyy-MM-dd}'.
17:29:21,674 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
17:29:21,674 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Mon Aug 11 17:29:21 BRT 2014
17:29:21,674 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[serverConsole] - Active log file name: C:/var/log/pincode//catalina.out
17:29:21,674 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[serverConsole] - File property is set to [C:/var/log/pincode//catalina.out]
...
17:29:21,685 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.

my logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<include resource="org/springframework/boot/logging/logback/basic.xml" />
<property name="FILE_LOG_PATTERN"
    value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%t] --- %-40.40logger{39} : %m%n%wex" />

<appender name="serverConsole"
          class="ch.qos.logback.core.rolling.RollingFileAppender">
    <Append>true</Append>
    <File>${LOG_PATH}/catalina.out</File>
    <encoder>
        <pattern>${FILE_LOG_PATTERN}</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${LOG_PATH}/catalina.out.%d{yyyy-MM-dd}
        </fileNamePattern>
        <maxHistory>15</maxHistory>
    </rollingPolicy>
</appender>

<!-- Plain Text Rolling Appender -->
<appender name="server"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <Append>true</Append>
    <File>${LOG_PATH}/pincode.log</File>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>INFO</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
    <encoder>
        <pattern>${FILE_LOG_PATTERN}</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${LOG_PATH}/pincode.log.%d{yyyy-MM-dd}
        </fileNamePattern>
        <maxHistory>15</maxHistory>
    </rollingPolicy>
</appender>

<!-- Plain Text Rolling Appender -->
<appender name="server-error"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <Append>true</Append>
    <File>${LOG_PATH}/pincode-error.log</File>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>ERROR</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
    <encoder>
        <pattern>${FILE_LOG_PATTERN}</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${LOG_PATH}/pincode-error.log.%d{yyyy-MM-dd}
        </fileNamePattern>
        <maxHistory>15</maxHistory>
    </rollingPolicy>
</appender>

<logger name="com.app" level="INFO">
    <appender-ref ref="server" />
    <appender-ref ref="server-error" />
</logger>

<root level="INFO">
    <appender-ref ref="serverConsole" />
</root> 

프로젝트에서 logback.xml 파일을 삭제해도 폴더가 생성되지 않습니다.그러면 스프링은 yml을 해석하기 전에 xml을 로드하고 있는 것입니까?

로그백을 회피하여 이 LOG_PATH_IS_UNDEFINED 디렉토리를 작성하려면 어떻게 해야 합니까?

의 경우LOG_PATH는 기동시에 정의되어 있지 않습니다. 하면 됩니다.${LOG_PATH:-.}대신 을 참조해 주십시오.

, 「」를 하면,logging.path 안에서application.properties.. 및에${logging.path}디렉토리로 이동합니다.

세트 ★★★★★★★★★★★★★★★★★★★★★★★」LOG_PATH★★★★★★★★★★★★★★★★★...로그백은 느린 파일 작성은 지원되지 않는 것으로 알고 있습니다.는 '먹다'를 사용해야 .logback-spring.xml, ★★★★★★★★★★★★★★★★」logback.xml.

나는 비슷한 문제에 직면했고 그것을 해결하는 것은 쉽다.속성인 Spring Boot을 입니다.LOG_PATH속성 - 프 for for for for for -logging.path '이렇게'를 정의합니다.logging.path하고 application.properties를 합니다.LOG_PATH- " " " " - "logback-spring.xml

안 .<property ...>★★★★★★에LOG_PATH언제든지 사용할 수 있습니다.

아래를 참조해 주세요.

저도 같은 문제에 부딪혔어요.logback.xml에 엔트리를 저장합니다.

<property resource="application.properties" />

application.properties에서

FILE_LOG_PATTERN=###
LOG_FILE=###

응용 프로그램이 시작될 때 만들어진 디렉토리의 이름은 속성 파일에 정의된 이름입니다.

도 있지만, 이 '아주머니'를 가지고 있다면bootstrap.propertieslogging.path거기서만 정의됩니다.

Finchley에 있는 Spring Boot Finchley(2.x)를 정의할 수 .spring.application.name 안에서application.properties ★★★★★★★★★★★★★★★★★」application.yml로그백 설정에 다음 파일을 추가합니다.

<configuration>
  <springProperty scope="context" name="springAppName" source="spring.application.name"/>
</configuration>

이 시점에서,${springAppName}의 할 수 있습니다.pattern.

Boot Spring Boot "Spring Boot " " " 。SpringApplication 팩토리를 로거 팩토리)을 합니다.logback.groovy,logback.xml,logback-test.xml Boot 아직 되지 않았습니다 「Spring Boot」를 합니다.이것은 변수를 의미합니다.LOG_PATH설정되지 않았습니다.을 수동으로 .logging.config Boot 하며, 로그백 이것에 의해, 로그백이 다음과 같이 재설정됩니다.LoggingApplicationListener이 문제는 springboot 페이지(https://github.com/spring-projects/spring-boot/issues/2558에서 확인할 수 있습니다.

Spring Boot 버전을 pom.xml로 업그레이드 할 경우 교체된 버전이

logging.path = 사용자/로그/패스

타고

logging.file.path = 사용자/로그/패스

application.properties로 이동합니다.그건 내 경우였어.

저도 같은 문제에 부딪혔어요.자체 logback.xml을 정의하려고 했는데 logging.path와 로깅 사용에 문제가 있었습니다.application.properties 파일에 정의된 파일 속성.문제를 해결(및 해결)한 방법은 다음과 같습니다.

먼저 logging.path와 logging을 모두 정의할 수 없다는 것을 배웠습니다.파일 속성.Rolling File Appender를 사용하여 여러 파일을 며칠 동안 생성하므로 로깅을 정의합니다.파일 접두사처럼 사용합니다.

»application.properties

# Don't add the file type at the end.  This will be added in logback.xml
logging.file=logs/my-app-name

main / / src / main / resources / 。logback.xml

<configuration>

    <property name="FILE_LOG_PATTERN" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder> 
          <Pattern>${FILE_LOG_PATTERN}</Pattern>
        </encoder> 
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder> 
          <Pattern>${FILE_LOG_PATTERN}</Pattern>
        </encoder> 
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>

    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>

</configuration>

을 사용하다FILE_LOG_PATN입니다.이치노fileNamePattern 니name 。에서 변수 LOG_FILE됩니다.OG_FILE application.properties 。 시 되지 않은 하고 Logback이라는 이름의 빈 입니다.LOG_FILE_IS_UNDEFINED_XXX현재 디렉토리에 있습니다.그러나 내 속성의 실제 로그 파일은 생성되어 올바르게 추가됩니다.

앤드류

스프링이 yml을 해석하기 전에 xml을 로드하고 있습니다.

따라서 logback.xml의 이름your-logback.xml로 변경하고,logging.config=classpath:your-logback.xmlproperties application.properties로 합니다.

dev합니다.dev/log 디렉토리만 작성하면 됩니다.「」는 하지 말아 .log.pathapplication.properties

log.path=dev/logs 안에서bootstrap.properties.

logback-spring.xml에 아래 행을 추가합니다.

<springProperty scope="context" name="LOG_PATH" source="log.path"/>
<property name="LOG_FILE" value="${LOG_PATH}/app/current"/>

참고 아래 행만 포함해야 합니다.

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

다음 행을 사용하지 마십시오.그렇지 않으면 콘솔로그가 비활성화되지 않고 spring.log 파일이 임시 디렉토리에 생성됩니다(application.properties에서 logging.path를 제공하지 않는 경우).자세한 내용은 아래 파일의 코드를 확인하십시오.

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

엔트리를 logback에 저장합니다.

<property name="DEV_HOME" value="c:/application_logs/ps-web" />

참조:

<fileNamePattern>${DEV_HOME}.%d{yyyy-MM-dd}.log</fileNamePattern>

logging.path 및 logging을 설정한 후 동일한 문제가 발생하였습니다.application.properties에 있는 파일입니다만, 일부 로그는 스프링 부트 로그백 설정 전에 생성되었기 때문에 LOG_PATH_IS_UNDEFINED/LOG_FILE_IS_UNDEFINED 파일에 기입되어 로그가 올바른 위치로 전환되었습니다.

두 가지 해결 방법을 찾았습니다.

1) logging.path 및 로깅을 설정합니다.bootstrap.properties에 파일을 저장해야 합니다.

또는

2) logging.path 및 로깅을 설정합니다.-Dlogging.path=... -Dlogging을 사용하여 시스템 속성으로 파일을 만듭니다.파일=...응용 프로그램 실행 시

Spring Boot의 공통 속성에 따라 다음 항목을 어플리케이션.yml에 추가합니다.

logging:
  file:
    path: logs/dev

application.properties를 사용하는 경우,

logging.file.path = logs/dev

logback.xml에 LOG_PATH 속성을 선언합니다.

<property name="LOG_PATH" value="" />

로그 파일이 작성되는 디렉토리를 지정할 필요가 있습니다.이 필드를 비워두면 로그백에 의해 프로그램 실행에 새 디렉토리가 생성됩니다.생성된 디렉토리의 이름은 LOG_PATH_IS_UNDEFINED입니다.

다음 항목을 POM 파일에 추가해 보십시오.

<plugin>
            <artifactId>maven-clean-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <filesets>
                    <fileset>
                        <directory>${basedir}/catalina.base_IS_UNDEFINED</directory>
                        <includes>
                            <include>**/*.log</include>
                        </includes>
                        <followSymlinks>false</followSymlinks>
                    </fileset>
                </filesets>
            </configuration>
        </plugin>

.yml 파일의 외부 경로에서 로그백을 호출하는 방법은 다음과 같습니다.

로깅: 설정: C:/folder/logback.xml

당신은 에러 파일을 포함했다고 생각합니다.바꿔주세요

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

로.

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

그럼 한번 해봐.

버전: 1.5.9

  1. 봄구름:

bootstrap.yml

spring:
  application:
    name: awesome-app
# profile:
#   active: dev
logging:
  path: /code/awesome-app

spring-logback.xml

${LOG_PATH}/awesome-app.log
  1. 스프링 부트:

application.yml

spring:
  application:
    name: awesome-app
# profile:
#   active: dev
logging:
  path: /code/awesome-app

spring-logback.xml

${LOG_PATH}/awesome-app.log

커스텀 로그 컨피규레이션 : https://docs.spring.io/spring-boot/docs/1.5.6.RELEASE/reference/htmlsingle/ #boot-boot-displays-custom-log-configuration

저도 비슷한 문제가 있었어요.logback-spring.xml의 이름을 logback-whything.xml로 변경하고 application.properties에 다음과 같이 추가했습니다.

logging.config=classpath: logback-whything.xml

또한 이 문제는 로깅 목적으로 다음과 같은 사용자 정의 속성을 사용하는 경우에도 발생합니다.

log.path=syslog.syslog.path=syslogs

나에게 효과가 있었던 것:

  • 리소스 폴더에 logback-spring.xml이 있습니다(yamls와 동일).
  • 환경변수 설정, application.syslogl
  • 수정 후 ./gradw 클린 빌드를 수행합니다.

모두 새해 복 많이 받으세요!그래서 스프링 부트를 버전(2.4.1)으로 업데이트하고 LOG_PATH_IS_UNDEFINED 오류를 표시하기 시작했습니다.

조금 조사했는데 logging.path에서 LOG_PATH로의 속성 매핑에 문제가 있는 것 같습니다.(로거를 수동으로 디버깅하고 속성을 로드하고 있었습니다)

솔루션/패치:

맨 위에 있는 logback-spring.xml에 수동 매핑을 추가했습니다.

<springProperty scope="context" name="LOG_PATH" source="logging.path"/>

이제 나한테는 효과가 있어...

언급URL : https://stackoverflow.com/questions/25251983/springboot-with-logback-creating-log-path-is-undefined-folder

반응형