padrino / padrino-framework

Padrino is a full-stack ruby framework built upon Sinatra.

Home Page:http://www.padrinorb.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

About inheritance of Padrino::Logger

tana6 opened this issue · comments

Hello.

I want to inherit Padrino::Logger and use it. However, the current Padrino::Logger implementation cannot be used smartly.
Because, an instance of Padrino::Logger is created even in the inherited class.

class CustomLogger < Padrino::Logger
end

...

Padrino.before_load do
  ...
  replace_logger = CustomLogger.logger # replace_logger is the instance of Padrino::Logger
  Padrino.logger = replace_logger
  ...
end

If possible, I would like you to change the implementation of Padrino::Logger#setup!.

Current implementation

module Padrino
  class Logger
    def self.setup!
      ...
      new_logger = Padrino::Logger.new(config.merge(:stream => stream))
      new_logger.extend(Padrino::Logger::Extensions)
      self.logger = new_logger
    end
  end
end

Alternative implementation

module Padrino
  class Logger
    def self.setup!
      ...
      # Create self-instance
      new_logger = self.new(config.merge(:stream => stream))
      new_logger.extend(self::Extensions)
      self.logger = new_logger
    end
  end
end

Thank you for reading.

I closed this issue. Because I read pull request #2228 and understood how to extend Padrino::Logger. Thanks for everything.