로깅
로깅
스프링 부트에서는 기본적으로 로깅 퍼사드로 Commans Logging을 지원한다. 그 이유는 스프링 코어에서 스프링 개발자들이 Commans Logging를 사용했기 때문이다. 로깅 퍼사드는 로깅과 다른데
로깅 퍼사드는 JUL, Log4J2,Logback등 여러 로깅 라이브러리들을 번역해주는 기능을 제공한다.
사람들은 Commans Logging을 사용하기를 기피하였는데, Commans Logging의 자잘스런 오류 때문이라고 한다. 예를들면 런타임시 클래스 패스 관련 이슈가 대표적이라고 할 수 있다. 그래서 Commans Logging을 기피하는 움직임도 보였다. 사람들은 Commans Logging을 사용하는 대신 SLF4J을 사용하기를 원했다. 그래서 스프링 부트1때는 SLF4J를 사용하기 위해 Core에서 Commans Logging을 exclusion을 한뒤, SLF4J를 사용했다고 한다.
그러다 스프링5에 들어서서 스프링JCL이라는 기능으로 인해 조금더 안전하게 SL4J를 사용할 수 있게 되었다. 물론 기본적으로 제공하는 건 Commans Logging이라 한다. 잘 모르지만, Commans Logging -> 스프링 JCL -> SLF4J -> 로깅라이브러리를 이런식으로 사용하는 느낌이 든다.
프로그램을 실행 할때
이런식으로 출력이 되는데 이게 로깅라이브러리가 해주는것 같다. 기본적으로 INFO레벨로 되어있는데 이것을 Debug모드로 바꾸고 싶다면, Vm options -Ddebug을 주거나 Program arguments에 --debug을 설정하게 되면 디버깅 모드로 찍히게 된다고 한다. (현재 이클립스를 사용하고 있어서 이게 어디에 있는지 정확히 모르는 상황이라 나중에 인텔리제이로 사용하게 되면 사용해볼 예정이다. CMD로 java -jar 로 하는 방법도 있으나 귀찮아서 ㅜㅜ) 하지만 이 방식은 핵심 라이브러리만 지원을 하고 나머지 라이브러리는 지원하지 않는다고 한다. --trace를 입력하면 전체 디버깅 모드로 들어간다고 한다.
만약에 로깅메시지에 색깔을 칠하고 싶다면
spring.output.ansi.enabled= always
이라고 하는데 현재 색깔이 깨져서 보이지 않고 있다.ㅜㅜ
일부 클래스만 로깅레벨을 조정하고 싶다면
logging.level.패키지 = DEBUG
해당 클래스는
private Logger logger = LoggerFactory.getLogger(SampleRunner.class); @Autowired private NoteProperties noteProperties; @Override public void run(ApplicationArguments args) throws Exception { logger.debug("===================="); logger.debug(noteProperties.getName()); logger.debug(noteProperties.getName()); logger.debug(noteProperties.getName()); logger.debug("====================");
이렇게 입력하게 되면
잘 연동이 되는 것을 확인 할 수 있다.
파일에 출력하고 싶다면 logging.file 혹은 logging.path file은 로그 파일명을 설정하는 거고, path는 경로를 지정한다. file같은 경우는 스프링 부트에서 지정된 곳으로 이동될것 같다.
커스텀마이징해서 관리하고 싶다면
logback : logback-spring.xml,
log4j2 : log4j2-spring.xml,
JUL : logging.properties를 추가한뒤 설정해주면 된다고 한다. 기본적으로 logback이 사용되는 것 같고, log4J2를 사용하고 싶다면, 의존성을 제거한뒤 이것을 추가해 사용해야할 듯 싶다. (참고로 JUL은 비추라고 한다.)
from http://b-programmer.tistory.com/18 by ccl(A) rewrite - 2020-03-22 10:54:25
댓글
댓글 쓰기