Forum: Ruby on Rails Rails logger.silence on controller action

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
(Guest)
on 2007-01-23 20:40
(Received via mailing list)
I've got a simple controller which is being hit every minute to monitor
the website. I've read in a few places, and on this group as well that
if you include a logger.silence around the code, it shouldn't appear in
the log. With the controller below, I get log entries every time the
action is called. I'm just wondering what I may be doing wrong.

Thanks.

CONTROLLER:
class MonitController < ActionController::Base
  session :off
##   this is used by the monitoring scripts to see if the mongrel is up
and running
  def index
    logger.silence do
      render :text => 'success'
    end
  end
end

LOG OUTPUT:
Processing MonitController#index (for 127.0.0.1 at 2007-01-23 12:18:45)
[GET]
  Parameters: {"action"=>"index", "controller"=>"monit"}
Completed in 0.00349 (286 reqs/sec) | Rendering: 0.00007 (2%) | DB:
0.00000 (0%) | 200 OK [http:// /monit/index]
Mike E. (Guest)
on 2007-03-19 23:37
(Received via mailing list)
Just wondering if any solution was found for this - I'm in exactly the
same position, looking to suppress Monit actions from appearing in my
log. Wrapping the action in logger.silence seems to have no effect,
nor does forcibly increasing the logger.level to try and filter it
out.

I'm on Rails 1.1.6 - is it perhaps a 1.2+ thing only?

Cheers,
Mike
Eden L. (Guest)
on 2007-03-20 06:54
(Received via mailing list)
Doesn't appear to be (even in 1.2+), other than monkey patching
ActionController::Base#log_processing for your needs.

If you're doing this to see if Mongrel is up, why not write a simple
handler and place it in  config/mongrel.conf?  This won't get logged
anywhere, and is way faster than going to rails for it:

# lib/monit_handler.rb
class MonitHandler < Mongrel::HttpHandler
  def process(request, response)
    response.start { |head, out| out.write("I'm up...") }
  end
end

# config/mongrel.conf
uri "/monit", :handler => MonitHandler.new

Then in your production scripts, you need to pass in an extra switch
to mongrel so it'll use config/mongrel.conf.  If you're using mongrel
cluster, add:

config_script: config/mongrel.conf

to your config/mongrel_cluster.yml
(Guest)
on 2007-03-24 23:15
(Received via mailing list)
I did find a way around it. Putting a def logger end in the controller
short circuits the logger from running and nothing is ever written to
the log files. This has also had the added benefit of removing a large
amount of memory usage for my application over time.

Also, I thought about going the mongrel handler route, but this works
for now.

CONTROLLER:
class MonitController < ActionController::Base
  session :off
##   this is used by the monitoring scripts to see if the mongrel is
up and running
  def index
  end
  def logger
  end
end
This topic is locked and can not be replied to.