Forum: Ruby on Rails using log4r and rails

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
F3af88ca25a1607014c3c11fed942bd7?d=identicon&s=25 Mark Bates (markbates)
on 2006-04-11 14:54
hey everyone. i know somebody else had started a thread on this subject,
but since no one seems to be answering that thread i thought i would
start one of my one.

i'm doing a project for a client and we need some seriously verbose
logging. it looks like log4r can do what i need, but i can't for the
life of me figure out how to plug it into rails. everywhere talks about
how easy it is, but nowhere can i find a description of how to actually
do it.

i'm using rails 1.1.2, lighttpd 1.4.11, and i'm on a mac.

please, any help would be very much appreciated!

0ca6dacbed829354319d844346cbd5f3?d=identicon&s=25 Dan Sketcher (Guest)
on 2006-04-12 00:50
(Received via mailing list)
Hey Mark,

I'm still on Rails 1.0 for the project that uses Log4R and although I
know there are 1 or 2 bugs in trac for rails integrating with it, most
things should be the same...
Also, I am deployed on FreeBSD under lighty so there should be no
problems with your setup.

In environment/rb I've got a require "logger" which is another file in
the environment dir

In logger.rb, I've copied a lot of the sample code off the log4r site,
but it looks pretty much like this:

# Configure logging.
# We use various outputters, so require them, otherwise config chokes
require 'log4r'
require 'log4r'
require 'log4r/yamlconfigurator'
require 'log4r/outputter/fileoutputter'
require 'log4r/outputter/datefileoutputter'
require 'log4r/outputter/emailoutputter'

cfg = Log4r::YamlConfigurator

# load the YAML file with this
RAILS_DEFAULT_LOGGER = Log4r::Logger['default']
RAILS_DEFAULT_LOGGER.level = (RAILS_ENV == 'development' ?
Log4r::DEBUG : Log4r::INFO)

if RAILS_ENV == 'test'
  Log4r::Outputter['stderr'].level = Log4r::OFF
  RAILS_DEFAULT_LOGGER.add( Log4r::Outputter['stderr_test'] )

if RAILS_ENV == 'production'
  Log4r::Outputter['standardlog'].level = Log4r::OFF
  Log4r::Outputter['stderr'].level = Log4r::OFF
  Log4r::Outputter['email'].level = Log4r::OFF

As you can see, I decided to keep the logger configuration all in one
place (out of the /environments/*.rb files). Note that this does not
include my log4r.yaml file, but it is heavily based on the
log4r_yaml.yaml file in the examples directory from the gem. My
stderr_test outputter is just like my stderr one but more verbose log
detail (using the 'slow' formatters) and it only outputs at ERROR not
WARN which keeps those Rake runs mostly free from error messages.

Note the line "RAILS_DEFAULT_LOGGER = Log4r::Logger['default']" - this
is the line that tells Rails not to set up its own logger, with
"default" defined like this:

    - name      : default
      level     : DEBUG
      additive  : 'false'
      trace     : 'true'
        - stderr
        - datefilelog
        - standardlog
        - email

I should point out that in the last if/else block that I am turning
off logging to the "production.log" file and only logging to a
DateFileOutputter (so that mu production logs look like

    - type        : DateFileOutputter
      name        : datefilelog
      level       : DEBUG
      date_pattern: '%Y%m%d'
      trunc       : 'false'
      dirname     : "#{RAILS_ROOT}/log"
      formatter   :
        date_pattern: '%y%m%d %H:%M:%S'
        #pattern     : '%d %l: %m '
        pattern     : "[%l] %d :: %m"
        type        : PatternFormatter

Hope that helps!

Dan Sketcher
F20f15806d6fd68beae60d483f050c11?d=identicon&s=25 Koen Warner (koenwarner)
on 2006-05-24 23:50
Dan Sketcher wrote:
> Hey Mark,
> I'm still on Rails 1.0 for the project that uses Log4R and although I
> know there are 1 or 2 bugs in trac for rails integrating with it, most

Hai Dan,

Seems to me you're an log4r expert. Could you please have a look at my
humble question? It isn't even about rails, but about log4r and ruby in
the first place.

A have the following combination of ruby code and a log4r xml config
file, and it just doesn't want to work:

class LoggerTester

	require 'log4r'
	require 'log4r/configurator'
	include Log4r


	@@my_log ='LoggerTestLogger')

	def do_log
	  	@@my_log.debug("==>Log test")


myTester =

   <outputter name="console" type="StderrOutputter" level="DEBUG"/>
   <logger name="LoggerTestLogger" level="DEBUG" trace="true">

It won't give any output. Can you see why?

This topic is locked and can not be replied to.