Log to multiple files

@Blacksmoke16 , Thanks! :slight_smile:

Now my example looks like:

require "log"

FOO_LOGGER = Log.for "foo"
BAR_LOGGER = Log.for "bar"

Log.setup do |c|
  foo_backend = Log::IOBackend.new(File.new("tmp/Foo.log", "a+"))
  bar_backend = Log::IOBackend.new(File.new("tmp/Bar.log", "a+"))

  c.bind "foo.*", :info, foo_backend
  c.bind "bar.*", :info, bar_backend
end

i = 0

FOO_LOGGER.notice { ["notice", i += 1] }
BAR_LOGGER.warn { ["warn",  i += 1] }
BAR_LOGGER.notice { ["notice",  i += 1] }
FOO_LOGGER.warn { ["warn",  i += 1] }

And, after clearing my log file contents,

  • the tmp/Foo.log file looks like:
2021-10-12T00:58:43.165283Z NOTICE - foo: ["notice", 1]
2021-10-12T00:58:43.165302Z   WARN - foo: ["warn", 4]

  • the tmp/Bar.log (after I cleared the contents) looks like:
2021-10-12T00:58:43.165294Z   WARN - bar: ["warn", 2]
2021-10-12T00:58:43.165298Z NOTICE - bar: ["notice", 3]