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!!!!!!!"