App 을 만들 때 각 환경별로 다른 설정값이 필요한데 배포할 때 마다 이것을 바꿔주는건 매우 귀찮고 오류 가능성도 크다.
이런 부분을 개선하기 위해 나온 것이
Spring의 경우에는 Spring Profile이 있고 이에 맞게 설정을 해 주면 된다.
http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html
Spring기반 개발시에 대부분 Spring셋팅으로 해결이 되지만
내가 지금 쓰는 logback은 스프링의 관리하에 실행되는게 아니기 때문에 별도 설정이 필요하다.
기본제공방법은 실행시
-Dlogback.configurationFile={로그파일경로}
형태로 파라미터를 보내서 로그파일을 선택한다.
이 방법은 각 환경별로 필요한 logback 파일의 이름을 알고 이를 별도로 선언해줘야 하는 불편함이 있다.
그래서 이 부분을 조금 보완한게 이것.
<repository>
<id>beansugar-release</id>
<url>http://nexus.beansugar.org/content/repositories/beansugar-release</url>
</repository>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>bs-logback-access</artifactId>
<version>1.1.1-1</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>bs-logback-classic</artifactId>
<version>1.1.1-1</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>bs-logback-core</artifactId>
<version>1.1.1-1</version>
</dependency>
기존의 logback을 대체한 후 몇 가지 설정만 해주면 된다
* dev서버에서 실행시킬 경우
-Dlogback.configSuffix=dev 또는 -Dspring.profiles.active=dev
의 파라미터를 넣어서 실행시키면
다음의 파일을 순서대로 찾아봐서 제일 먼저 검색되는 녀석을 이용해서 셋팅이 된다.
logback-dev.groovy
logback-dev.xml
logback.groovy
logback.xml
* 파라미터가 없는 경우
logback-test.groovy
logback-test.xml
logback.groovy
logback.xml
끝.
logback.xml 샘플
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- help : http://logback.qos.ch/manual/appenders.html -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{36}.%method : %msg%n</pattern>
<immediateFlush>true</immediateFlush>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="file" class="ch.qos.logback.core.FileAppender">
<file>logs/com.polypia.memo.log</file>
<append>true</append>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger{36}.%method : %msg%n</pattern>
<immediateFlush>false</immediateFlush>
<charset>UTF-8</charset>
</encoder>
</appender>
<logger name="com.polypia.memo" level="INFO"/>
<root level="INFO">
<appender-ref ref="console"/>
</root>
</configuration>
추가. 201506
GROOVY설정하면 더 간단해짐