#---------------lib/app_logger.rb------------
require ‘logger’
class AppLogger
attr_writer :man_name, :emp_name
def initialize(man_name, emp_name)
@man_name = man_name
@emp_name = emp_name
log_path = "log/"
file_name = "file.log"
log_level = "ACTIVITY"
log_file = log_path + file_name
@logger = Logger.new(log_file, ‘daily’)
case log_level
when "DEBUG"
@level = Logger::DEBUG
when "INFO"
@level = Logger::INFO
when "WARN"
@level = Logger::WARN
when "ERROR"
@level = Logger::ERROR
when "FATAL"
@level = Logger::FATAL
else
@level = Logger::UNKNOWN
end
end
def close
@logger.close if @logger
end
def debug(msg)
log_message(Logger::DEBUG, msg)
end
def info(msg)
log_message(Logger::INFO, msg)
end
def warn(msg)
log_message(Logger::WARN, msg)
end
def error(msg)
log_message(Logger::ERROR, msg)
end
def fatal(msg)
log_message(Logger::FATAL, msg)
end
def activity(msg)
log_message(Logger::UNKNOWN, msg)
end
private
SEV_LABEL = %w(DEBUG INFO WARN ERROR FATAL UNKNOWN)
def log_message(severity, msg)
if @logger.nil? or severity < @level
return true
end
fmt_msg = “#{@man_name} | #{@emp_name} | #{Time.now.strftime(”%Y-
%m-%d %H:%M:%S")} | #{SEV_LABEL[severity]} | #{msg}\r\n"
@logger << fmt_msg
end
end
#-----------------------------------------------------------
Above logger Code is present in lib folder, named logger.rb
i have included —before_filter :init_logger-- this piece of code in
all controllers
in application.rb
def init_logger
unless $app_logger
man_name = “mPowerForce”
emp_name = “mPowerSales”
$app_logger = AppLogger.new(man_name, emp_name)
end
end
rails version —>2.1.1
am running my rails application as three instances in three consequent
ports
on the first day no problem in creating file.log and next day when
application is running in 1st instance its creating a backup of
file.log as file_previous_date.log when its running in the 2nd
instance on the same day
The following error occurred
Logger::ShiftingError in controller
Shifting failed. closed stream
Could any one give a solution for this problem
Thanx in advance