lib/loog/tee.rb



# frozen_string_literal: true

# SPDX-FileCopyrightText: Copyright (c) 2018-2025 Yegor Bugayenko
# SPDX-License-Identifier: MIT

require_relative '../loog'

# A combiner of a few logs together:
#
#  require 'loog'
#  require 'loog/tee'
#  tee = Loog::Tee.new(Loog::VERBOSE, file_logger)
#  tee.info('Hello, world!')
#
# This way you can log to console and to the file at the same time.
#
# Author:: Yegor Bugayenko (yegor256@gmail.com)
# Copyright:: Copyright (c) 2018-2025 Yegor Bugayenko
# License:: MIT
class Loog::Tee
  # Makes an instance.
  def initialize(*logs)
    @logs = logs
  end

  def debug(msg)
    @logs.each { |g| g.debug(msg) }
  end

  def debug?
    @logs.any?(&:debug?)
  end

  def info(msg)
    @logs.each { |g| g.info(msg) }
  end

  def info?
    @logs.any?(&:info?)
  end

  def warn(msg)
    @logs.each { |g| g.warn(msg) }
  end

  def warn?
    @logs.any?(&:warn?)
  end

  def error(msg)
    @logs.each { |g| g.error(msg) }
  end

  def error?
    @logs.any?(&:error?)
  end
end