기본적으로 레퍼런스는 아래와 같다.
여기서는 .properties 기준으로 설명이 되어 있는데,
logging.level.org.hibernate=ERROR
식으로 하이버네이트 패키지에 대해 로깅 레벨을 ERROR로 설정할 수 있다.
그렇다면 yml에서는 어떻게 해야 하나?
🔴
logging:
level:
org.hibernate=ERROR
이렇게 하면 바인딩 에러가 난다.
org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'logging.level' to java.util.Map<java.lang.String, java.lang.String>
at org.springframework.boot.context.properties.bind.Binder.handleBindError(Binder.java:250)
🔴
logging:
level:
"org.hibernate":"ERROR"
이렇게 하면 snakeyaml 파싱 에러가 난다.
Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping
in 'reader', line 39, column 3:
pattern:
^
expected <block end>, but found Scalar
in 'reader', line 43, column 20:
"org.hibernate":"ERROR"
^
at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:571)
답은 가까운 곳에 있다고 스프링부트 레퍼런스 24.8.2 Relaxed Binding에 있었다.
When binding to Map
properties, if the key
contains anything other than lowercase alpha-numeric characters or -
, you need to use the bracket notation so that the original value is preserved. If the key is not surrounded by []
, any characters that are not alpha-numeric or -
are removed. For example, consider binding the following properties to a Map
:
acme: map: "[/key1]": value1 "[/key2]": value2 /key3: value3
The properties above will bind to a Map
with /key1
, /key2
and key3
as the keys in the map.
Map 프로퍼티들을 바인딩하기 위해서는 key에 해당하는 것을 []괄호로 감싸서 써야 한다는 것. 슬래시(/)를 사용할 수도 있지만 괄호로 감싸는 것이 예상치 못한 결과를 방지할 수 있다.
logging:
level:
"[org.hibernate]": ERROR
아이콘 출처: https://github.com/spring-projects/spring-boot/issues/11972
'Programing > Scripts' 카테고리의 다른 글
[JS] ESLint를 썼더라면... (0) | 2019.10.31 |
---|---|
[Google 스프레드시트] AWS 로그 찾기 (0) | 2019.06.03 |
자바스크립트에서 날짜별 iterate 하기 (0) | 2018.03.06 |
복사/붙여넣기 대안 (0) | 2018.02.02 |
Y분 만에 자바스크립트 배우기 (0) | 2015.03.25 |