시스템을 운영하다가 사고가 발생하면 가장 많은 도움을 받는 것이 바로 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에 대해서 정리한다는 생각으로 한 번 살펴봤다는 의미로 생각하면 되겠다.
반응형
'Development Tools > Redmine' 카테고리의 다른 글
Gantt 차트 PNG 내보내기 : 한글 출력 오류 수정 (1) | 2013.05.16 |
---|---|
Redmine 2.3.1 (2013-05-01) - changelog & upgrade (0) | 2013.05.03 |
Redmine plugin - Banner (Notification, 공지) (0) | 2013.04.25 |
Redmine plugin - CKEditor (WYSIWYG, 위지윅) (0) | 2013.04.15 |
Redmine 2.3.0 - Show relations in Gantt diagram (2) | 2013.03.24 |