Back

log4r - sinatra下的使用,以及如何定制filename

发布时间: 2019-03-28 09:53:00

直接参考的官方文档.

app.rb:

Dir[File.join(__dir__, 'lib', '*.rb')].each { |file| require file }
$logger = LoggerTool.get_logger log_file_postfix: ENV['market_id'], name: Sinatra::Application.environment.to_s

$logger.info "== hihihi"

lib/logger_tool.rb

require 'log4r'
require 'log4r/yamlconfigurator'
require 'log4r/outputter/datefileoutputter'

class LoggerTool
  include Log4r

  def self.get_logger options

    log4r_config= YAML.load_file(File.join(File.dirname(__FILE__), '..', "config", "log4r.yml"))
    temp = log4r_config['log4r_config']

    temp["outputters"][0]['filename'] = "matcher_#{options[:log_file_postfix]}"

    # 如果是测试环境,那么修改名字为 test
    if options[:name] == 'test'
      temp["outputters"][0]['filename'] = "test"
    end 

    YamlConfigurator.decode_yaml(temp)

    return Log4r::Logger[options[:name]]
  end
end

就可以了. 

定制filename的窍门,在于读取yml配置后,定义一个临时的变量,然后hash['key']=value的形式来动态的修改文件名

Back