logback으로 로깅을 하고 있다.
레벨, 시간 ... 등의 순서인데, 이미 레벨은 5자리 패딩을 하고 있다.
왜냐하면 로깅 레벨은 WARN, INFO 같은 4자리 길이와 ERROR, FATAL 같은 5자리가 섞여있어서 패딩이 되어 있지 않다면
WARN 2016-08-11 11:45:10.474 [http-bio-9020-exec-1] c.c.a.a.t.Te
WARN 2016-08-11 11:45:10.475 [http-bio-9020-exec-1] c.c.a.a.t.Te
WARN 2016-08-11 11:45:10.477 [http-bio-9020-exec-1] c.c.a.a.t.Te
ERROR 2016-08-11 11:45:10.477 [http-bio-9020-exec-12] c.c.a.a.t.Te
INFO 2016-08-11 11:45:10.505 [http-bio-9020-exec-1] c.c.o.i.web.
WARN 2016-08-11 11:45:10.948 [http-bio-9020-exec-1] c.c.a.a.t.Te
WARN 2016-08-11 11:45:12.294 [http-bio-9020-exec-12] c.c.a.a.t.Te
ERROR 2016-08-11 11:45:12.295 [http-bio-9020-exec-1] c.c.a.a.t.Te
WARN 2016-08-11 11:45:12.296 [http-bio-9020-exec-13] c.c.a.a.t.Te
WARN 2016-08-11 11:45:12.296 [http-bio-9020-exec-1] c.c.a.a.t.Te
WARN 2016-08-11 11:45:12.296 [http-bio-9020-exec-1] c.c.a.a.t.Te
WARN 2016-08-11 11:45:12.297 [http-bio-9020-exec-1] c.c.a.a.t.Te
가
WARN 2016-08-11 11:45:10.474 [http-bio-9020-exec-1] c.c.a.a.t.Te
WARN 2016-08-11 11:45:10.475 [http-bio-9020-exec-1] c.c.a.a.t.Te
WARN 2016-08-11 11:45:10.477 [http-bio-9020-exec-1] c.c.a.a.t.Te
WARN 2016-08-11 11:45:10.477 [http-bio-9020-exec-12] c.c.a.a.t.Te
INFO 2016-08-11 11:45:10.505 [http-bio-9020-exec-1] c.c.o.i.web.
WARN 2016-08-11 11:45:10.948 [http-bio-9020-exec-1] c.c.a.a.t.Te
WARN 2016-08-11 11:45:12.294 [http-bio-9020-exec-12] c.c.a.a.t.Te
ERROR 2016-08-11 11:45:12.295 [http-bio-9020-exec-1] c.c.a.a.t.Te
WARN 2016-08-11 11:45:12.296 [http-bio-9020-exec-13] c.c.a.a.t.Te
WARN 2016-08-11 11:45:12.296 [http-bio-9020-exec-1] c.c.a.a.t.Te
WARN 2016-08-11 11:45:12.296 [http-bio-9020-exec-1] c.c.a.a.t.Te
WARN 2016-08-11 11:45:12.297 [http-bio-9020-exec-1] c.c.a.a.t.Te
처럼 삐죽삐죽 보일 것이기 때문이다.
로그 패턴은 아래와 같다.
'%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %class{36}.%method:%line %msg%n'
그런데 위의 로그에서 스레드 표시하는 %thread 부분이 thread id가 어떤 것은 한 자리이고 어떤 것은 두 자리라서 줄이 안맞기 시작한다. 처음에는 %level처럼 길이로 패딩을 주려고
'%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} [%-21thread] %class{36}.%method:%line %msg%n'
처럼 수정을 했는데,
WARN 2016-08-11 11:45:12.294 [http-bio-9020-exec-12] c.c.a.a.t.Te
ERROR 2016-08-11 11:45:12.295 [http-bio-9020-exec-1 ] c.c.a.a.t.Te
WARN 2016-08-11 11:45:12.296 [http-bio-9020-exec-13] c.c.a.a.t.Te
WARN 2016-08-11 11:45:12.296 [http-bio-9020-exec-1 ] c.c.a.a.t.Te
와 같이 []안의 내용이 비어보이는 현상이 있었다.
내가 원하는 것은 아래와 같은 형태이다.
WARN 2016-08-11 11:45:12.294 [http-bio-9020-exec-12] c.c.a.a.t.Te
ERROR 2016-08-11 11:45:12.295 [http-bio-9020-exec-1] c.c.a.a.t.Te
WARN 2016-08-11 11:45:12.296 [http-bio-9020-exec-13] c.c.a.a.t.Te
WARN 2016-08-11 11:45:12.296 [http-bio-9020-exec-1] c.c.a.a.t.Te
로그백 메뉴얼을 보다보니 그룹으로 패딩을 넣어주는 내요이 있었다.
http://logback.qos.ch/manual/layouts.html 의 Parentheses are special에 잘 나와 있다.
예)
%-30(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{32} - %msg%n
따라서 앞에서 %thread까지 그룹을 잡아서 패딩을 넣어주면 된다.
%-55('%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread]) %class{36}.%method:%line %msg%n'
참고로 이 기능은 버전 0.9.27부터 지원이 된다고 한다. 다행히 사용하고 있는 버전이 1.1.3이다.
ch.qos.logback:logback-core:1.1.3
'Programing > Framework' 카테고리의 다른 글
[Spring] 스프링에서 정적리소스 설정하기 (0) | 2016.09.13 |
---|---|
[Spring] @Controller에서 @RequestParam로 Date 타입 받기. (0) | 2016.09.08 |
[스프링] @Component에 대한 잘못 알고 있었던 것 (0) | 2015.06.30 |
[스프링] ibatis / mybatis의 스프링4 지원 중단? (0) | 2015.05.14 |
[아키텍쳐] 마이크로 서비스 아키텍쳐(MSA) (0) | 2015.01.06 |