1. 프로젝트 생성.

이클립스 기준, Spring MVC Project 프로젝트 생성

2. 메이븐 빌드-배포가 아닌 단순 톰캣 서버 실행..

- pom.xml 에 dependency 추가


<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.0.13</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> <scope>runtime</scope> </dependency> <!--logback.xml 에서 프로파일 별 분기를 위한 if condition 구문을 쓸 수 있게 한다.--> <dependency> <groupId>org.codehaus.janino</groupId> <artifactId>janino</artifactId> <version>3.0.8</version> </dependency>


3. logback.xml

-    log4j.xml 파일을 logback.xml 로 변경

- logback.xml


<?xml version="1.0" encoding="UTF-8"?>
<!-- configuration file for LogBack (slf4J implementation) See here for more 
	details: http://gordondickens.com/wordpress/2013/03/27/sawing-through-the-java-loggers/ -->
<configuration scan="true" scanPeriod="30 seconds">

	<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
		<resetJUL>true</resetJUL>
	</contextListener>

	<!-- To enable JMX Management -->
	<jmxConfigurator />

	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} %-5level %logger{32}[%method:%line] - %msg%n</pattern>
		</encoder>
	</appender>

	<if condition='property("spring.profiles.active").equals("run")'>
		<then>
			<property name="LOG_DIR" value="/logs/run" />
			<property name="LOG_LEVEL" value="WARN" />
		</then>
		<else>
			<property name="LOG_DIR" value="/logs/dev" />
			<property name="LOG_LEVEL" value="INFO" />
		</else>
	</if>


	<property name="LOG_PATH_NAME" value="${LOG_DIR}/spring-logback-test.log" />

	<appender name="LOG_FILE"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_PATH_NAME}</file>
		<append>true</append>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_PATH_NAME}.%d{yyyy-MM-dd}.%i.log.gz
			</fileNamePattern>
			<timeBasedFileNamingAndTriggeringPolicy
				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>60KB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
			<maxHistory>5</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} %-5level %logger{32}[%method:%line] - %msg%n</pattern>
		</encoder>
	</appender>
	
	<if condition='property("spring.profiles.active").equals("loc")'>
		<then>
			<logger name="com.spring.test" level="debug" />
		</then>
		<else>
			<logger name="com.spring.test" level="warn" />
		</else>
	</if>
	
	<root level="${LOG_LEVEL}">
		<if condition='property("spring.profiles.active").equals("loc")'>
			<then>
				<appender-ref ref="CONSOLE" />
			</then>
			<else>
				<appender-ref ref="LOG_FILE" />
			</else>
		</if>
	</root>
	
</configuration>


3. 서버 구동

Run Configuration > VI arguments   -Dspring.profiles.active='프로파일'   에 옵션 추가 후 실행

4. 확인

- debugging code

logger.debug("debug");
		logger.info("this is an info");
		logger.warn("warn");
		logger.error("this is an error");


1)  loc (root level : debug)

12:23:44.653 DEBUG com.spring.test.HomeController[home:47] - loc

12:23:44.653 DEBUG com.spring.test.HomeController[home:49] - debug

12:23:44.653 INFO  com.spring.test.HomeController[home:50] - this is an info

12:23:44.654 WARN  com.spring.test.HomeController[home:51] - warn

12:23:44.654 ERROR com.spring.test.HomeController[home:52] - this is an error


2)  dev(root level : info)


12:31:05.173 INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping[registerHandlerMethod:190] - Mapped "{[/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.spring.test.HomeController.home(java.util.Locale,org.springframework.ui.Model)

12:31:05.376 INFO  o.s.w.s.h.SimpleUrlHandlerMapping[registerHandler:314] - Mapped URL path [/resources/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0'

12:31:05.394 INFO  o.s.w.s.h.SimpleUrlHandlerMapping[registerHandler:301] - Root mapping to handler 'homeController'

12:31:05.410 INFO  o.s.w.servlet.DispatcherServlet[initServletBean:463] - FrameworkServlet 'appServlet': initialization completed in 537 ms

12:31:20.454 WARN  com.spring.test.HomeController[home:51] - warn

12:31:20.455 ERROR com.spring.test.HomeController[home:52] - this is an error


3) run(root level : warn)

13:33:00.479 WARN  com.spring.test.HomeController[home:51] - warn

13:33:00.482 ERROR com.spring.test.HomeController[home:52] - this is an error



Posted by 긍뎡
,