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.properties
logging.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.xml
properties application.properties로 합니다.
dev합니다.dev/log 디렉토리만 작성하면 됩니다.「」는 하지 말아 .log.path
application.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
- 봄구름:
bootstrap.yml
spring:
application:
name: awesome-app
# profile:
# active: dev
logging:
path: /code/awesome-app
spring-logback.xml
${LOG_PATH}/awesome-app.log
- 스프링 부트:
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
'programing' 카테고리의 다른 글
jQuery Ajax 호출 - 성공 시 변수 값 설정 (0) | 2023.03.08 |
---|---|
Wordpress 로그인 이름으로 사용자 ID 가져오기 (0) | 2023.03.08 |
약속 체인에서의 set Timeout 사용 (0) | 2023.02.26 |
ASP.NET MVC 3 (레이저) 에이잭스Action Link - 내가 뭘 잘못하고 있지? (0) | 2023.02.26 |
MySQL(5.6) 열에 json 문서가 문자열로 포함된 경우 값을 가져오는 방법 (0) | 2023.02.26 |