Как настроить автоматическую очистку на test.log и development.log в рубинах на рельсах?Вращение/очистка журнала в Ruby on Rails
Есть ли способ автоматического удаления dev и тестовых журналов при запуске сервера и запуске тестов?
Как настроить автоматическую очистку на test.log и development.log в рубинах на рельсах?Вращение/очистка журнала в Ruby on Rails
Есть ли способ автоматического удаления dev и тестовых журналов при запуске сервера и запуске тестов?
ruby logger на руку, чтобы помочь вам здесь - и имеют параметры по умолчанию для вращение.
Вот что я делаю:
В environment.rb
мы определяем наш собственный регистратор
new_logger = Logger.new(File.join(RAILS_ROOT, "log", "new_logger_#{RAILS_ENV}.log"), 'daily')
new_logger.formatter = Logger::Formatter.new
Это создает собственные регистраторы ... с форматировщику (так что вы получите временные метки и т.д.), с одной на окружающую среду , и поворачивается ежедневно.
Затем в блоке инициализации мы задаем Rails использовать этот Лог инфокодов
Rails::Initializer.run do |config|
config.active_record.logger = new_logger
config.action_controller.logger = new_logger
#snip
end
, очевидно, Вы можете видеть власть здесь, чтобы иметь различные регистраторы для active_record
и action_controller
- иногда очень полезно!
См. Здесь в этом уроке: Rotating Rails Log Files, я не знаю, разрешает ли он вашу проблему, потому что я не забочусь о своих файлах журналов.
Hpe Я помогу вам!
Unfortunetely logrotate доступен только для Unix-подобных систем. –
rake log:clear
- это задача рейка, которая обрезает все файлы, соответствующие log/*.log
, на нулевые байты. Вы можете вызвать его на своем сервере и запустить задачи тестирования.
Весь скрипт/сервер, является рубином сценарий, я уверен, вы можете изменить его, чтобы сделать что-то вроде:
#!/usr/bin/env ruby
require 'fileutils'
FileUtils.rm File.join(File.dirname(__FILE__), log, *.log)
require File.dirname(__FILE__) + '/../config/boot'
require 'commands/server'
В производственной среде вам действительно нужен SyslogLogger (http://rails-analyzer.rubyforge.org/tools/files/lib/analyzer_tools/syslog_logger_rb.html), он позволяет вам писать в syslogd, который creansup, поворачивает ваши файлы в распределенной настройке.
После эксперимента я обнаружил, что инициализаторы Rails загружаются в нужную точку, где вы можете обрезать файл, используя стандартный класс Ruby File
. У меня есть это в конфигурации/Инициализаторы/truncate_logs_on_server_start.rb:
if MyRailsApp::Application.config.truncate_logs_on_server_start
# Making an assumption here that we're logging to a file...
File.open("log/#{ENV["RAILS_ENV"]}.log", "w") do |log_file|
log_file.puts("Initializer truncate_logs_on_server_start reset the log file")
log_file.puts
end
end
Вы только должны установить MyRailsApp::Application.config.truncate_logs_on_server_start
в application.rb и различных средах.
Что именно вы подразумеваете под «очисткой»? – cakeforcerberus