시스템을 운영하다가 사고가 발생하면 가장 많은 도움을 받는 것이 바로 Log 파일이다.
Redmine의 경우에도 당연히 Log 파일을 만들어주고 있다.

그런데, 관심을 두지 않고 있어서 별 문제가 없어 보이지만 지금 현재 Log 파일을 살펴보면
엄청난 용량에 무의미한 데이터를 계속 저장하고 있을 수도 있다.


1. Redmine's Log File

   - 기본 경로는 redmine 설치 디렉토리 밑에 ./log/ 에 생성이 된다.
   - 필자의 경우 [ ./log/production.log ] 파일로 생성이 되고 있다.


2. Log contents

   - 아무런 설정 변경 없이 그냥 사용할 경우 어떤 내용이 채워지고 있을까?
   - [ cat ./log/production.log ]

Started GET "/redmine/" for 10.0.2.2 at 2013-04-28 18:31:27 +0900
Processing by WelcomeController#index as HTML
  Current user: anonymous
  Rendered news/_news.html.erb (1.3ms)
  Rendered welcome/index.html.erb within layouts/base (3.0ms)
  Rendered plugins/redmine_banner/app/views/banner/_project_body_bottom.html.erb (0.0ms)
Completed 200 OK in 26ms (Views: 9.5ms | ActiveRecord: 4.3ms)
Started GET "/redmine/login" for 10.0.2.2 at 2013-04-28 18:31:29 +0900
Processing by AccountController#login as HTML
  Current user: anonymous
  Rendered account/login.html.erb within layouts/base (3.6ms)
  Rendered plugins/redmine_banner/app/views/banner/_project_body_bottom.html.erb (0.1ms)
Completed 200 OK in 13ms (Views: 9.7ms | ActiveRecord: 1.5ms)
Started POST "/redmine/login" for 10.0.2.2 at 2013-04-28 18:31:35 +0900
Processing by AccountController#login as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"Pe5aTLPaPSNRv6MX244+6cDZBU1JgcOtjdGm9bE3xis=", "back_url"=>"ht$
  Current user: anonymous
Failed login for 'admin' from 10.0.2.2 at 2013-04-28 09:31:35 UTC
  Rendered account/login.html.erb within layouts/base (1.7ms)
  Rendered plugins/redmine_banner/app/views/banner/_project_body_bottom.html.erb (0.1ms)
Completed 200 OK in 8ms (Views: 6.6ms | ActiveRecord: 0.5ms)
Started POST "/redmine/login" for 10.0.2.2 at 2013-04-28 18:31:39 +0900
Processing by AccountController#login as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"Pe5aTLPaPSNRv6MX244+6cDZBU1JgcOtjdGm9bE3xis=", "back_url"=>"ht$
  Current user: anonymous
Successful authentication for 'admin' from 10.0.2.2 at 2013-04-28 09:31:39 UTC
Redirected to http://127.0.0.1/redmine/
Completed 302 Found in 6ms (ActiveRecord: 2.8ms)
Started GET "/redmine/" for 10.0.2.2 at 2013-04-28 18:31:39 +0900
Processing by WelcomeController#index as HTML
  Current user: admin (id=1)
  Rendered news/_news.html.erb (2.8ms)
  Rendered welcome/index.html.erb within layouts/base (5.1ms)
  Rendered plugins/redmine_banner/app/views/banner/_project_body_bottom.html.erb (0.0ms)
Completed 200 OK in 19ms (Views: 11.1ms | ActiveRecord: 3.6ms)

   - 에러만 기록되고 있는 것이 아니라 Redmine에서 이루어지는 모든 상황이 전부 기록되고 있는 것을 확인할 수 있다.
   - 그러다보니 Log의 크기를 감당하기가 쉽지가 않다.



3. Guide Document

   - Redmine에서 Log 관련 설정을 어떻게 해야하는지에 대한 내용은 다음에서 확인할 수 있다.
   - http://www.redmine.org/projects/redmine/wiki/RedmineInstall#Logging-configuration

   - Log 파일에 대한 설정을 어떻게 해야하는지 확인하기 위해서 현재 사용하고 있는 Ruby 버전을 확인해보자.

 Environment:
  Redmine version                        2.3.0.stable
  Ruby version                             1.9.3 (i686-linux)
  Rails version                             3.2.13
  Environment                              production
  Database adapter                       PostgreSQL
Redmine plugins:

 $ ruby --version
ruby 1.9.3p392 (2013-02-22 revision 39386) [i686-linux]


   - Ruby v1.9.3 에서 Logger에 대한 도움말은 아래의 주소에서 찾아볼 수 있다.
   - http://www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html

   - Redmine에서 검색 결과로 나온 document도 있다.
   - http://www.redmine.org/boards/2/topics/25236




4. ./config/addional_environment.rb

   - Redmine의 config 디렉토리에 있는 설정 파일들 중 하나에서 Log에 대한 설정을 할 수 있다.

   - 우선 설정 파일을 만들자.

$ cd ./config/

$ cp ./additional_environment.rb.example ./additional_environment.rb

$ ls
additional_environment.rb          boot.rb                    environment.rb  locales            settings.yml
additional_environment.rb.example  configuration.yml.example  environments    preinitializer.rb
application.rb                     database.yml               initializers    routes.rb

   - 파일 내용을 보면 아래와 같다.

 $ cat ./additional_environment.rb
# Copy this file to additional_environment.rb and add any statements
# that need to be passed to the Rails::Initializer.  `config` is
# available in this context.
#
# Example:
#
#   config.log_level = :debug
#   ...
#

   - 아직은 주석밖에 없다. 그렇다는 말은 지금 현재는 default 설정으로 되어있다는 것이다.

   - 특별한 설정 없는 default 설정은 다음과 같은 값으로 되어있는 것과 같다고 한다.

 config.logger.level = Logger::INFO

   - 로그 파일을 분할을 한다거나 하는 설정은 전혀 없는 것이다. 이 부분에 대한 설정을 해보자.

config.logger = Logger.new('./log/production.log', 5, 1024000)
config.logger.level = Logger::ERROR

   - Logger.new 첫 번째 파라미터는 로그 파일 저장 위치이고,
   - 그 다음은 한 개의 로그 파일의 크기가 약 10MB가 되면 최대 5개로 분할되어 저장을 하라는 의미이다.
   - 로그 파일이 모두 채워지면 처음 만들어진 것부터 차례대로 삭제된다.

   - config.logger.level 에서 사용할 수 있는 옵션은 FATAL, ERROR, WARN, INFO, DEBUG 이다.
   - 기본 설정인 INFO의 경우 너무 많은 정보를 저장하기 때문에, ERROR 정도로 설정을 변경하는 것을 추천한다.


   - 이렇게 파일을 저장하고 Apache2를 재시작하면, 변경된 설정으로 Log가 남겨지게 된다.




결론만 보면 그냥 설정 파일 하나 추가해서 두 줄 추가하는 것 뿐이지만,
이번 기회에 Redmine의 Log에 대해서 정리한다는 생각으로 한 번 살펴봤다는 의미로 생각하면 되겠다.

반응형

+ Recent posts