Message Converter & Log

Message Converter

XML이나 JSON을 이용한 Ajax처리와 Client - Server 사이의 메세지 전송에 이용됨

  • Request Body / Response Body 구조

  • 메서드 파라미터에 @RequestBody, 메서드 반환타입으로 @ResponseBody 혹은 메서드 어노테이션으로 이용

  • Message Converter는 AnnotationMethodHandlerAdpater 인터페이스를 통해 하나이상의 컨버터가 등록, 선택 동작하게 된다.

    • <mvc:annotation-driven/>에서 자동으로 등록된다.

      • <mvc:annotation-driven/> 디폴트 bean과 함께 Jackson과 JAXB가 라이브러리로 등록 되어있을 경우 같이 등록된다.

✔️ 주로 Ajax처리의 상태 메세지 전송을 주고받을때 이용된다.

Log

예제에서는 SLF4J의 구현체중 하나인 Logback📝logback.xml을 적용해 이용하기위해 JCL은 제외하고 사용했다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

	<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
		<file>/logex/ExceptionLog.log</file>
		<encoder>
			<charset>UTF-8</charset>
			<Pattern>
				%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n
			</Pattern>
		</encoder>
	</appender>

	<appender name="fileAppender2" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>/logex/logex2.log</file>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<Pattern>
				%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n
			</Pattern>
		</encoder>
		<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
			<FileNamePattern>/logex/logex2.%i.log.zip</FileNamePattern>
			<MinIndex>1</MinIndex>
			<MaxIndex>10</MaxIndex>
		</rollingPolicy>
		<triggeringPolicy
			class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<MaxFileSize>50KB</MaxFileSize>
		</triggeringPolicy>
	</appender>

	<appender name="fileAppender3" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>/logex/logex3.log</file>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<Pattern>
				%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n
			</Pattern>
		</encoder>
		<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
			<FileNamePattern>/logex/logex3.%i.log.zip</FileNamePattern>
			<MinIndex>1</MinIndex>
			<MaxIndex>10</MaxIndex>
		</rollingPolicy>
		<triggeringPolicy
			class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<MaxFileSize>1MB</MaxFileSize>
		</triggeringPolicy>
	</appender>


	<!--
		com.cafe24.logex2 아래 패키지 로그들만  \logex\logex2.log 파일에만  출력하는 로거
	-->
	<logger name="com.cafe24.mysite2.exception"  level="debug" additivity="false">

            <appender-ref ref="fileAppender2" />
            <appender-ref ref="consoleAppedner" />
    </logger>


	<logger name="com.cafe24.logex2"  level="debug" additivity="false">
            <appender-ref ref="fileAppender2" />
    </logger>

	<!--
		com.cafe24.logex3 아래 패키지 로그들만  \logex\logex3.log 파일과 콘솔로 출력하는 로거
	-->
	<logger name="com.cafe24.logex3"  level="warn" additivity="false">
            <appender-ref ref="fileAppender3" />
			<appender-ref ref="consoleAppender" />
    </logger>    

	<!-- 루트(글로벌) 로거 -->
	<root level="info">
		<appender-ref ref="consoleAppender" />
	</root>

</configuration>

logback.xml

<appender> 의 구성

  • 저장될 로그파일의 경로와 출력될 형식을 지정하고 <rollingPolicy> 속성을 통해
  • <triggeringPolicy>의 용량이 넘을 경우의 압축 형식을 만든다.

<logger>

  • name : 로깅할 패키지의 범위 지정 (미지정시 글로벌 루트에 맞춰진다)
  • level : 로깅 레벨의 지정 (debug, info, warn, error)
  • additivity : 자식로그를 추가할지의 여부 (false면 포함)