【问题标题】:Is there a composite output stream in the Ruby standard library or a gem?Ruby 标准库或 gem 中是否有复合输出流?
【发布时间】:2021-03-12 03:49:43
【问题描述】:

我想创建一个对象,该对象可以配置任意一组输出流(例如STDOUT、一个打开的文件、一个StringIO),这样我就可以写入这个对象一次,然后拥有它将输出写入所有配置的输出流。

这样的事情存在吗?写起来可能不难,但如果它已经在那里,那就更好了。

比如……

log_file = File.open('my.log', 'w')
strio = StringIO.new
outputter = CompositeOutputStream.new(log_file, strio, STDOUT)
outputter << "I can be found in all 3 output streams."
...
log_file.close
# do something with strio.string

【问题讨论】:

  • 不在标准库 AFIK 中。不知道是否有人已经为此发明了宝石。也许您可以这样做,并将其贡献给社区?
  • 是的,我知道这是一种可能性,并且我已经贡献了几个开源 gem。不过,我不知道这是否值得我花时间,尤其是因为一些记录器会这样做。

标签: ruby outputstream


【解决方案1】:

我不知道直接处理流的库,但是对于日志记录,https://github.com/rocketjob/semantic_logger 能够多路复用、批处理、异步等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 2015-12-25
    • 2011-05-16
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多