仅在ruby中记录某个事件一次

时间:2010-06-08 06:26:30

标签: ruby logging

ruby​​中是否有任何日志框架允许您只记录一次特定的事件类型?

logger = IdealLogger.new
logger.log(:happy_path, "We reached the happy path") # => logs this message
logger.log(:happy_path, "We reached the happy path yet again") # => Doesn't log this
logger.log(:sad_path, "We've encountered a sad path!") # => logs this message

此外,是否只有一次记录某个事件类型的概念?

修改:我正在使用Plain Old Ruby Objects,而不是Rails。我记得“每次运行脚本一次”为“一次”。

1 个答案:

答案 0 :(得分:2)

我不知道一个,但扩展Logger制作自己的并不太难。它本质上是为您的日志记录实现缓存,但不是像使用普通应用程序那样从缓存中获取并返回它,而是在缓存时撤消它。此日志缓存的实现和到期策略留给读者练习。

类似的东西:

class IdealLogger < Logger
  def info(event = nil, progname = nil, &block)
    super(progname, &block) unless event_is_cached(event)
  end

  # define debug, warn, error, fatal, and unknown the same way, override others
  # as you wish.
end