2012-04-10 1 views
2

Мы запускаем проект рельсов позади haproxy. Каждый раз в приложение отправляется приложение keep-alive. Это вызывает очень шумные файлы журналов, из-за чего он немного борется, и он делает их излишне большими.Изменение уровня журнала для одного контроллера или действия в рельсах

Моя первая мысль заключалась в том, чтобы изменить уровень ведения журнала для этого действия для отладки, но кто-то предложил изменить уровень ведения журнала в around_filter. Я не сумасшедший об этой идее, но я могу просто реализовать ее. Я открыт для разных решений, но общие требования заключаются в том, что я могу успокоить эти действия, но я мог бы изменить уровень ведения журнала, если мне нужно было их увидеть по любой причине.

+0

Я вижу вашу проблему, но я думаю, что фильтр является самым простым решением в моих глазах. Используйте 'before_filter', чтобы повысить уровень журнала och' after_filter', чтобы сбросить его. Все остальное выглядит довольно сложным ... – klump

+0

Я знаю, что «log4j» может сделать это очень легко, однако я не уверен, что это может сделать log4r. ожидая других предложений. –

+0

Mhh, вы всегда можете использовать более низкий уровень журнала, чем значение по умолчанию, и просто снижать уровень журнала по умолчанию, если вам нужен выход. Если нет более низкого уровня журнала, попробуйте взломать свой собственный в систему. – klump

ответ

4

Другим решением является вставка некоторого промежуточного программного обеспечения для стойки, которое обрабатывает проверку keep-alive до, которая попадает в жизненный цикл Rails ApplicationController.

Шаг 1: сделайте некоторое промежуточное программное обеспечение, которое отвечает на проверку работоспособности. В моем примере запрос поддержания активности является GET /health-check так это будет выглядеть:

class HealthCheckMiddleware 
    def initialize(app) 
    @app = app 
    end 

    def call(env) 
    if env['PATH_INFO'] == '/health-check' 
     return [200, {}, ['healthy']] 
    end 
    @app.call(env) 
    end 
end 

Конечно, изменить это проверка здоровья по мере необходимости. Может быть, вы должны проверить другие переменные запроса/CGI ...

Шаг 2: убедитесь, что вы вставили эту промежуточное программное обеспечение, прежде чем Rails :: Rack :: Logger:

config.middleware.insert_before Rails::Rack::Logger, "HealthCheckMiddleware" 

Теперь ваш промежуточного обрабатывающий проверка работоспособности и ваши журналы были полностью обойдены.

+0

Теперь это оригинальная идея, позвольте мне работать с этим, чтобы попытаться заставить это работать. –

+0

Работал как шарм, спасибо! –

+0

сладкий! я получаю щедрость? :) –