inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

nowoyk님의 게시글

nowoyk nowoyk

@choyinoom

수강평 작성수
-
평균평점
-

게시글 1

질문&답변

치환 문자(?) 질문 드립니다!

안녕하세요! 질문하신 내용 읽고 저도 궁금해서 조금 찾아봤는데요 완벽한 답변은 아니지만 도움이 되실까 싶어 글을 남겨 봅니다. 1. 로거의 동작 원리 org.slf4j.helpers라는 패키지에 보시면 MessageFormatter 라는 클래스가 있는데, 그 중 arrayFormat이라는 메소드를 봐보세요. 로깅할 문구를 생성할 때 내부적으로 StringBuilder를 쓰고 있음을 알 수 있습니다. log.error("test: {}, {}", 1, 2); 위의 코드를 예시로 들자면, 개발자가 적은 메세지 포맷("test: {}, {}")에서 "{}"가 선언된 위치를 찾아 파라미터(1과 2)로 치환해주는 식으로 동작하는 듯 합니다. 형식 지정자를 따로 사용하지 않아도 로거 문구가 알아서 잘 생성되는 이유는 toString()메소드를 이용해 모든 파라미터를 String 형으로 바꿔주기 때문입니다. ( MessageFormatter.safeObjectAppend 참고!) 파라미터에 String 타입이 아닌 Map이나 다른 객체가 들어와도 에러가 나지 않는 이유는 모든 Object는 toString() 메서드를 가지고 있기 때문이죠 이외에 logback의 경우 logback.xml에 지정하는 %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 이런 패턴이 어떻게 적용되는지 궁금하다면 package ch.qos.logback.classic 아래에 있는 PatternLayout 클래스를 살펴보시면 좋을 것 같고요! 2. errors.properties의 오류 메시지 동작 원리 totalPriceMin =가격 * 수량의 합은 {0}원 이상이어야 합니다. 현재 값 = {1} 이런 내용을 errors.properties 파일에 넣었을 때 {0}과 {1}에 어떻게 값이 들어가는지 궁금하시다면 스프링 프레임워크의 MessageSourceSupport 클래스와 java.text 아래에 있는 MessageFormat 클래스를 참고해 보시기 바랍니다 디버깅 도구를 쓸 줄 아시면 공부에 많은 도움이 되실 거에요 덕분에 저도 공부를 하게 되었네요~ 재밌는 질문 감사합니다 :)

좋아요수
0
댓글수
3
조회수
948