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면 포함)