【发布时间】: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