I write a rake, just wondering if I can configure the Ruby logger to log into different files based on different levels of logging.
eg.
# log to info.log
logger.info "processing: 1/10"
logger.info "processing: 2/10"
logger.info "processing: 3/10"
...
# log to error.log
logger.error "Validation failed on :email"
logger.error "Validation failed on :name"
Update
I have found an integral solution, and it seems that it is not. Thanks for the quick reply @spickermann, and I will go by his thought to set up my own version.
Here is the final code if someone needs it.
require 'logger'
class DistinctFileLogger
LOG_LEVEL = [:debug , :info , :warn , :error , :fatal , :unknown]
def initialize(path)
@loggers = {}
LOG_LEVEL.each do |level|
@loggers[level] = Logger.new(path)
end
end
LOG_LEVEL.each do |level|
define_method(level) do |message|
@loggers[level].send(level, message)
end
define_method("set_#{level}_path") do |path|
@loggers[level] = Logger.new(path)
end
end
end
logger = DistinctFileLogger.new(STDOUT)
logger.set_error_path("{path_to}/error.log")
logger.info "processing: 1/10"
logger.info "processing: 2/10"
logger.info "processing: 3/10"
logger.error "Validation failed on :email"
logger.error "Validation failed on :name"
source
share