반응형
문제
스프링 레거시로 프로젝트 설정을 하는 도중 logback 설정이 적용되지 않는 현상이 있었다.
원인
해당 상황은 logback이 초기에 실행될 때, logback.xml, logback-test.xml 파일을 찾고 없으면 기본적인 것인 구현체를 기본설정으로 구성되도록 구현되어있기 때문이었다.
profile별 로깅 설정을 동적으로 구성하도록 하기위해서 스프링 부트에서 제공하는 logback 확장인 logback-spring.xml으로 구성 해보았는데 스프링 레거시에서는 역시나 동작하지 않았다.
- 스프링 부트에서는 logback 확장을 지원해서 logback-spring.xml 로 설정을 구성하면 서블릿 컨테이너가 실행되고 이후에 스프링 컨테이너가 시작되면서 설정을 읽기 때문에 스프링과 관련된 기술들을 사용할 수 있도록 해준다.
해결
logback에서 조건부 처리를 위해서 필요한 janino 라이브러리를 이용해서 logback.xml 을 profile별 동적으로 구성되게하여서 이 문제를 해결하였다.
우선 janino 라이브러리 추가가 필요하다.
<!-- logback.xml 설정파일에서 자바 표현식을 사용할 수 있게 해주는 라이브러리-->
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>3.1.8</version>
</dependency>
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>commons-compiler</artifactId>
<version>3.1.8</version>
</dependency>
logback.xml
<if condition='isDefined("spring.profiles.active")'>
<then>
<if condition='"${spring.profiles.active}".contains("local")'>
<then>
<include resource="/console-appender.xml"/>
<logger name="org.hibernate.SQL" level="DEBUG" />
<!-- <logger name="org.hibernate.type" level="TRACE" />-->
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
</root>
</then>
</if>
<if condition='"${spring.profiles.active}".contains("prod")'>
<then>
<include resource="/file-info-appender.xml"/>
<include resource="/file-warn-appender.xml"/>
<include resource="/file-error-appender.xml"/>
<root level="INFO">
<appender-ref ref="FILE-INFO"/>
<appender-ref ref="FILE-WARN"/>
<appender-ref ref="FILE-ERROR"/>
</root>
</then>
</if>
</then>
</if>
- logback.xml에서 조건을 이용해서 profile별 로깅환경을 설정할 수 있다.
참고
반응형
'Error & 삽질' 카테고리의 다른 글
스프링에서 데이터베이스 연결 실패(MySQL 커넥션 유실) (1) | 2024.03.29 |
---|---|
젠킨스(jenkins) 빌드 성공 후, 백그라운드 프로세스(background process) 종료 현상(nohup java -jar 종료) (0) | 2024.02.04 |
스프링 시큐리티(Spring Security) - Ajax 요청 시, 필터가 여러 번 호출되는 현상 (0) | 2023.09.11 |
스프링 시큐리티(Spring Security) - SecurityFilterChain 여러 개 구성 시 실수 (0) | 2023.09.04 |
에러(Error) JSch - com.jcraft.jsch.JSchException: Auth fail (0) | 2022.05.03 |