0

Below code saving as logger.rband then adding that file into script as require

require "log4r"
include Log4r

$mylog = Logger.new 'mylog'
$mylog.outputters = Outputter.stdout
$file = FileOutputter.new(
'fileOutputter', :filename => 'D:\WATIRScript\Log\filename',:trunc => false)
$format = PatternFormatter.new( :pattern => "[%l] %d :: %m")

$file.formatter = $format
# log level order is DEBUG < INFO < WARN < ERROR < FATAL
$mylog.level = Log4r::INFO
$mylog.add($file)

Getting below error when I run the script

D:/logger.rb:4:in `<top (required)>': undefined local variable or method `Outputter' for main:Object (NameError)
from C:/ruby192/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from C:/ruby192/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
Željko Filipin
  • 56,372
  • 28
  • 94
  • 125
Paddy M
  • 117
  • 1
  • 12

1 Answers1

0

I didn't see your log4r.yml config file. and from the error message, I think your config file contains problems.

here is a config file for your reference, pay attention to the "outputters" section:

# save this file as: log4r.yml
log4r_config:

  # define all loggers ...
  loggers:
    - name      : production
      level     : WARN
      trace     : 'false'
      outputters :
      - datefile
    - name      : development
      level     : DEBUG
      trace     : 'true'
      outputters :
      - datefile

  # define all outputters (incl. formatters)
  outputters:
  - type: DateFileOutputter
    name: datefile
    dirname: "log"  # make sure this folder exists
    file: "my_log" # this will be overrided by rails' config.
    formatter:
      date_pattern: '%H:%M:%S'
      pattern     : '%d %l: %m '
      type        : PatternFormatter

you can use this config file like this:

require 'log4r'
require 'log4r/yamlconfigurator'
require 'log4r/outputter/datefileoutputter'
include Log4r

log4r_config= YAML.load_file(File.join(File.dirname(__FILE__),"log4r.yml"))
YamlConfigurator.decode_yaml( log4r_config['log4r_config'] )
logger = Log4r::Logger["development"]
logger.debug "hi there, see me ? "

and you will get log4r message.

see this link in Rails environment: How to configure Log4r with Rails 3.0.x?

Community
  • 1
  • 1
Siwei
  • 19,858
  • 7
  • 75
  • 95