class MultiLevelLogger::MLogger

Public Class Methods

create(opts) { || ... } click to toggle source
# File lib/multi_level_logger.rb, line 6
def self.create(opts)
        Logger.class_eval do
                define_method "add" do |severity, message = nil, progname = nil, &block|
                severity ||= UNKNOWN
                progname ||= @progname
                if message.nil?
                        if block_given?
                                message = yield
                        else
                                message = progname
                                progname = @progname
                        end
                end

                @shit_age = opts[:shift_age] || 0
                @shift_size = opts[:shift_size] || 1048576

                unless File.directory?("log") 
                        Dir.mkdir("log")
                end

                @logdev_warn ||=  Logger::LogDevice.new(opts[:warn] || "log/warn.log", :shift_age => @shift_age, :shift_size => @shift_size)        if (opts[:all] || opts[:warn])
                @logdev_info ||= Logger::LogDevice.new(opts[:info] || "log/info.log", :shift_age => @shit_age, :shift_size => @shift_size)      if (opts[:all] || opts[:info])
                @logdev_debug ||= Logger::LogDevice.new(opts[:debug] || "log/debug.log", :shift_age => @shit_age, :shift_size => @shift_size)       if (opts[:all] || opts[:debug])
                @logdev_error ||= Logger::LogDevice.new(opts[:error] || "log/error.log", :shift_age => @shit_age, :shift_size => @shift_size)           if (opts[:all] || opts[:error])
                @logdev_fatal ||= Logger::LogDevice.new(opts[:fatal] || "log/fatal.log", :shift_age => @shit_age, :shift_size => @shift_size)           if (opts[:all] || opts[:fatal])
                @logdev_unknown ||= Logger::LogDevice.new(opts[:unknown] || "log/unknown.log", :shift_age => @shit_age, :shift_size => @shift_size) if (opts[:all] || opts[:unknow])

                if @logdev_warn && severity == WARN
                        @logdev_warn.write(
                                format_message(format_severity(WARN), Time.now, progname, message))
                end
                if @logdev_info && severity == INFO
                        @logdev_info.write(
                                format_message(format_severity(INFO), Time.now, progname, message))
                end
                if @logdev_debug && severity == DEBUG
                        @logdev_debug.write(
                                format_message(format_severity(DEBUG), Time.now, progname, message))
                end
                if @logdev_error && severity == ERROR
                        @logdev_error.write(
                                format_message(format_severity(ERROR), Time.now, progname, message))
                end
                if @logdev_fatal && severity == FATAL
                        @logdev_fatal.write(
                                format_message(format_severity(FATAL), Time.now, progname, message))
                end
                if @logdev_unknown && severity == UNKNOWN
                        @logdev_unknown.write(
                                format_message(format_severity(UNKNOWN), Time.now, progname, message))
                end

                if @logdev.nil? or severity < @level or !opts[:default_logger]
                        return true
                end
                @logdev.write(
                        format_message(format_severity(severity), Time.now, progname, message))
                        true
                end
        end  

        Logger.new "log/development.log"
end