小编ify*_*ndy的帖子

使用Ruby logger根据日志记录级别记录到不同的文件

我在写一个耙子,只是想知道是否可以配置Ruby logger,以便根据不同的日志记录级别记录到不同的文件。

例如

# 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"
Run Code Online (Sandbox Code Playgroud)

更新资料

我本来会找到一个固有的解决方案,但似乎没有。感谢@spickermann的快速回答,我将提出他的想法来调整我自己的版本。

如果有人需要,这是最终代码。

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 …
Run Code Online (Sandbox Code Playgroud)

ruby logging

5
推荐指数
1
解决办法
671
查看次数

标签 统计

logging ×1

ruby ×1