관리 메뉴

HAMA 블로그

Play2.4 로 웹 개발 시작하기 - (4) 로깅처리 본문

PlayFramework2

Play2.4 로 웹 개발 시작하기 - (4) 로깅처리

[하마] 이승현 (wowlsh93@gmail.com) 2016. 9. 27. 17:44


 Play2.4 로 웹 개발 시작하기 

쉽고, 재밌고, 강력하고, 편리한 웹 프레임워크 Play2  (scala 언어기반) 을 배워봅시다.

1. Play2.4 웹 개발 시작하기 -  설치 및 프로젝트 만들기 

2. Play2.4 웹 개발 시작하기 -  프로젝트 살펴보기 

3. Play2.4 웹 개발 시작하기 -  나만의 프로젝트 만들기 

4. Play2.4 웹 개발 시작하기 -  로깅처리



4. 로깅처리

Play2 프레임워크는 기본적으로 logback 을 지원하므로 별다른 의존성을 추가할 필요는 없다.

먼저 application.conf 를 보면 기본적으로 아래와 같이 세팅되어 있는데 주석처리하고 


# Root logger:
logger.root=DEBUG

# Logger used by the framework:
logger.play=DEBUG

# Logger provided to your application:
logger.application=DEBUG


conf/logback.xml 파일을 추가 해서 logback 관련 내용을 채우자. 

기본적으로 채워지는 내용은 아래와 같다.

<configuration>

<conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${application.home}/logs/application.log</file>
<encoder>
<pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
</encoder>
</appender>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%coloredLevel %logger{15} - %message%n%xException{5}</pattern>
</encoder>
</appender>

<logger name="play" level="INFO" />
<logger name="application" level="DEBUG" />

<root level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>

</configuration>

출력이 파일과 콘솔 두 방향으로 나온다.
개인적으로 application 의 레벨을 DEBUG 로 바꾸었다.


import play.api.Logger

// thing //
def thingByDate (kind: String, year: Int, month: Int) = Action {

Logger.debug("Attempting Logging.")

val res : List[ThingStat] = kind match {
case "1" => statisticsModel.analysisThingDayStatistics(year, month)
case "2" => statisticsModel.analysisThingMonthStatistics(year)
case "3" => statisticsModel.analysisThingYearStatistics()

case _ => Logger.error("Exception with abnormalArgument") ; Nil
}

Ok(Json.toJson(res))

}

play.api.Logger 를 임포트 한후에 Logger.debug("Attempting Logging.")  을 찍으면 잘 출력된다.


Logger.debug(s"thingByDate -> kind :  ${kind}")

이렇게  format 을 사용하는 대신해 간단하게  매개변수를 넣어서 출력 할 수 도 있다. 

case t: Throwable => {
// Log error with message and Throwable.
Logger.error("Exception with somthing ", t)

 예외를 출력해주고 싶을땐 위처럼 사용하면 된다.


 위의 로그출력은 디폴트 로거 ("application") 를 사용한 거였다.
 이제 자신만의 로거를 정의해 서 사용해보자.

val accessLogger: Logger = Logger("access")

 이렇게 자신만의 로거를 만들 수 있으며 보통은 클래스 당 하나씩  맞춰서 사용한다.

val logger = Logger(this.getClass())



나머지 logback 그 자체에 대한 내용은 전용 문서를 찾아보자.

Comments