Ruby on Rails 프로덕션 로그 회전
Ruby on Rails 프로덕션 앱에서 로그 순환을 활성화하는 가장 좋은 방법은 무엇입니까?
호스팅 서버에서 logrotate를 사용합니까, 아니면 앱에서 로거를 초기화 할 때 사용할 옵션 세트가 있습니까?
옵션 1 : syslog + logrotate
시스템 로그 도구를 사용하도록 레일을 구성 할 수 있습니다.
config / environments / production.rb 의 예제입니다 .
# Use a different logger for distributed setups
config.logger = SyslogLogger.new
이렇게하면 syslog에 로그하고 기본 logrotate 도구를 사용하여 로그를 회전 할 수 있습니다.
옵션 2 : 일반 Rails 로그 + 로그 로테이션
또 다른 옵션은 레일에서 남은 로그를 가져 오도록 logrotate를 구성하는 것입니다. 우분투와 데비안에서는 예를 들어라는 파일에 /etc/logrotate.d/rails_example_com
있습니다.
/path/to/rails.example.com/tmp/log/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
copytruncate
}
아래의 제안에 copytruncate
따라 Rails에서는 Rails 앱을 다시 시작하지 않아도되도록 사용하는 것이 좋습니다 .
편집 : "sharedscripts / endscript"는 여기에서 사용되지 않으므로 설명에 따라 문제가 발생하므로 제거했습니다. 그리고 create 640 root adm
의견에 따라 제거 되었습니다.
logrotate를 사용하는 경우 /etc/logrotate.d/ 디렉토리에 conf 파일을 배치하여 아래 표시된 옵션 중 하나를 선택할 수 있습니다.
# Rotate Rails application logs based on file size
# Rotate log if file greater than 20 MB
/path/to/your/rails/applicaton/log/*.log {
size=20M
missingok
rotate 52
compress
delaycompress
notifempty
copytruncate
}
또는
# Rotate Rails application logs weekly
/path/to/your/rails/applicaton/log/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
copytruncate
}
copytruncate는 현재 로그의 백업 복사본을 만든 다음 계속 쓰기 위해 로그 파일을 지 웁니다. 다른 방법은 create를 사용하여 현재 파일의 이름을 바꾸고 이전 파일과 동일한 이름의 새 로그 파일을 만들어 회전을 수행하는 것입니다. 작성이 필요하다는 것을 모르면 copytruncate를 사용 하는 것이 좋습니다 . 그 이유는 이름이 변경 되어도 Rails가 여전히 이전 로그 파일을 계속 가리키고 새 로그 파일을 찾기 위해 다시 시작해야하기 때문입니다. copytruncate는 활성 파일과 동일한 파일을 유지하여이를 방지합니다.
Rails 5의 경우 로그 크기를 제한하고 콘솔에서 서버 출력을 변경하지 않기 위해 수행해야하는 작업입니다.
문서에 따르면 , 로그 폴더의 크기를 제한하려면 환경 파일 ( 'development.rb'/ 'production.rb')에 넣으십시오.
config.logger = ActiveSupport::Logger.new(config.paths['log'].first, 1, 50 * 1024 * 1024)
이를 통해 로그 파일은 50Mb보다 커지지 않습니다. 크기를 원하는대로 변경할 수 있습니다. 두 번째 매개 변수의 '1'은 1 개의 기록 로그 파일이 유지되므로 최대 100Mb의 로그 (현재 로그 및 이전 청크 50Mb)를 갖게됩니다.
모든 로그에 대해 : Rails 로그, Rpush 로그, ... 서비스 설정 파일에서 다음과 같이 사용할 수 있습니다.
config.log_file = 'log/rpush.log'
config.logger = ActiveSupport::Logger.new(config.log_file, 1, 20*1024*1024)
의미 : 분할 후 1 개의 이전 로그 파일 만 저장하십시오. 기본 로그 크기는 20MB를 넘지 않습니다.
매일 로그 순환을 원한다면 Rails 5에서는 다음과 같은 것만 필요합니다.
config.logger = ActiveSupport::Logger.new(config.paths['log'].first, shift_age = 'daily')
있는 해당하는 문서를 , 당신이 사용할 수있는 daily
, weekly
또는 monthly
.
Enable to send logs to the loggly using rails logglier as following in my environments/production.rb file. rails version is 4.1.0
RailsApplication::Application.configure do
require 'logglier'
config.logger = Logglier.new(<https://logs-01.loggly.com/inputs/inputkey>)
log.info("hello from logglier")
end
참고URL : https://stackoverflow.com/questions/4883891/ruby-on-rails-production-log-rotation
'Programming' 카테고리의 다른 글
파이썬은 해석되거나 컴파일됩니까, 아니면 둘 다입니까? (0) | 2020.05.29 |
---|---|
Mockito : 개인 @Autowired 필드에 실제 객체 주입 (0) | 2020.05.29 |
git diff를 사용하여 두 개의 스프레드 시트로 읽을 수있는 diff를 만들려면 어떻게합니까? (0) | 2020.05.29 |
외래 키 제약 조건으로 인해 사이클이나 다중 캐스케이드 경로가 발생할 수 있습니까? (0) | 2020.05.29 |
볼륨에 단일 파일을 마운트하는 방법 (0) | 2020.05.29 |