본문 바로가기

.주제별

RubyOnRails - Logger 기능

Rails App에는 3가지 구동 모드가 있다.  [Development/ Production/ Test]

Mongrel 웹서를 이용하는 경우, 다음 처럼 구동모드를 선택할 수가 있다.

mongrel_rails start -e development -d -p <포트번호>

mongrel_rails start -e production -d -p <포트번호>

mongrel_rails start -e test -d -p <포트번호>


이 구동모드에 따라 각각 log파일이 따로 존재한다.

<rails_app_path>/log/development.log

<rails_app_path>/log/productiont.log

<rails_app_path>/log/test.log

 

Rails에서 제공되는 logging 이외 다른 log을 기록하고 싶다면 다음처럼 꾸리면 된다.

 

## Log 선언

표준 or 파일 입출력 모두 가능함

logger = Logger.new(/입출력/)

logger = Logger.new(STDOUT)

logger = Logger.new("hi.log")

 

## Log 레벨 지정

log 레벨은 다음과 같다

[DEBUG < INFO < WARN < ERROR < FATAL < UNKNOWN]

logger.level = Logger::INFO 
ogger.level = Logger::DEBUG

 

## Log 사용

logger.level "LOG Message" or
logger.level ("LOG Message")
logger.info("Application starting")
Level을 최소 Info로 지정해야 파일에 log가 남는다.
logger.FATAL("Application terminating")
level을 최소 Fatal로 지정해야 파일에 log가 남는다.
  

다음은 내가 사용하고 있는 예제이다.


## <username>.log 로 logging을 하되,
     log 파일의 크기 제한은 100k임
     단. 100k 파일을 최대 10개까지 생성할수 있되,
      10을 기준으로 반복/갱신 된다.

logger = Logger.new("./log/#{username}.log", 10, 100*1024)

## log level은 "DEBUG"로, 모든 로그을 뽑아내고자 한다.
  (개발모드라서)
   양산(?) 버전에서는 FATAL등으로 처리하면 편할듯

logger.level = Logger::DEBUG

## log을 남길 메세지를 정한다. 
   __LINE__ : 
   현재 파일의 line number을 나타냄. (파일이름은 __FILE__)

logger.info "#{__LINE__}  : user login time = #{login_time}"

logger.fatal "#{__LINE__} : No user id!!!!!!!"