log4r - sinatra下的使用,以及如何定制filename
访问量: 1400
直接参考的官方文档.
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的形式来动态的修改文件名