스프링 부트에서 application.properties의 사용자 홈 경로 가져오기
이것은 꽤 간단한 일이지만, 꽤 많은 연구를 한 후에 저는 이것을 할 수 있는 어떤 방법을 찾기가 어렵습니다.
현재 사용자의 홈 디렉토리에 로그 파일을 만들고 싶습니다.공식 문서에 따르면 내가 수정해야 할 변수는 다음과 같습니다.logging.file
그리고.logging.path
. 사용자 가정의 가치를 어떻게 구현할 수 있을까요?logging.path
?
다음과 같이 설정해 보았습니다.
logging.path=#{systemProperties['user.home']}
하지만 아무 성과가 없었습니다.
${user.home}
당신의 대답입니다.
예를 들어,${user.home}/logs/app/app.log
스프링부트 2.2.6
Linux 또는 Mac OS를 사용하는 경우logging.path=${HOME}/logs
.
${HOME}
환경 변수에 의해 대체됩니다.HOME
.
저는 제가 그 문제를 해결했다고 생각합니다.문제의 로그 파일은 IDE(Eclipse Luna FYI)에서 실행되는 경우에만 클래스 경로에서 실제로 생성되고 있었습니다.나중에 jar 파일을 만들어서 실행했을 때 로그 파일은 에 명시된 올바른 위치에서 생성되고 있었습니다.application.properties
파일. 이클립스에서 실행했을 때 클래스 경로에서 왜 생성되었는지 아직도 알 수 없습니다.
저는 개발 환경에서 동일한 이슈에 직면했기 때문에 다른 접근을 시도했습니다.공식 문서를 읽은 경우 사용자 지정 구성을 제공할 수도 있습니다.그리고 logging.path는 사용자 지정 구성이 제공되지 않은 경우 기본값으로 사용됩니다.
log4j2를 사용하고 싶어서 커스텀 패턴 등이 필요합니다.그래서 실제로 log4j2.xml 구성 파일을 class-path에 넣었습니다.개발과 프로덕션 모두에서 실제로 작동한 자세한 내용은 제 xml conf 파일을 보세요.
<?xml version="1.0" encoding="UTF-8"?>
<configuration monitorInterval="30">
<properties>
<property name="app.name">my-app</property>
<property name="pattern">%d{ISO8601} %-5p %c - %m%n</property>
</properties>
<appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="${pattern}"/>
</Console>
<RollingRandomAccessFile name="my_app" append="false" fileName="${sys:user.home}\.${app.name}\logs\${app.name}.log"
filePattern="${sys:user.home}\.${app.name}\logs\$${date:yyyy-MM}/${app.name}-%d{yyyy-MM-dd}-%i.log.zip">
<PatternLayout>
<pattern>${pattern}</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="5 MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingRandomAccessFile>
</appenders>
<loggers>
<root level="INFO">
<AppenderRef ref="console"/> <!-- To console -->
<AppenderRef ref="my_app"/>
</root>
<AsyncLogger name="com.rameysoft.streamline.main" additivity="FALSE" level="DEBUG">
<AppenderRef ref="console"/>
<AppenderRef ref="my_app"/>
</AsyncLogger>
</loggers>
</configuration>
logging.path=~/logs.
간단한 솔루션을 사용합니다.~
홈 디렉토리의 심볼, Linux/mac/window에서 잘 작동합니다.
스프링부트 2.2.6
언급URL : https://stackoverflow.com/questions/30432473/getting-the-user-home-path-in-application-properties-in-spring-boot
'programing' 카테고리의 다른 글
도커 컨테이너에서 호스트에서 셸 스크립트를 실행하는 방법은 무엇입니까? (0) | 2023.10.17 |
---|---|
카르마를 사용한 각도 테스트: "모듈이 정의되지 않았습니다." (0) | 2023.10.17 |
URL 인코딩 데이터가 포함된 Spring RestTemplate POST 요청 (0) | 2023.10.12 |
자식 지시 전에 부모 지시를 실행하는 방법? (0) | 2023.10.12 |
문자열에 공백뿐만 아니라 문자와 공백이 포함되어 있는지 확인하려면 어떻게 해야 합니까? (0) | 2023.10.12 |