MultiLogger.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System;
  2. using System.Linq;
  3. namespace VCommon.Logging
  4. {
  5. public sealed class MultiLogger : ILogger
  6. {
  7. private readonly ILogger[] _loggers;
  8. public MultiLogger(params ILogger[] loggers)
  9. {
  10. if (loggers.Any(p => p is DefaultLogger)) throw new ArgumentException("Can not use DefaultLogger");
  11. _loggers = loggers.Where(p => false == p is NullLogger).ToArray();
  12. }
  13. public void Debug(string summary, object moreInfo = null)
  14. {
  15. foreach (var logger in _loggers) logger.Debug(summary, moreInfo);
  16. }
  17. public void Trace(string summary, object moreInfo = null)
  18. {
  19. foreach (var logger in _loggers) logger.Trace(summary, moreInfo);
  20. }
  21. public void Info(string summary, object moreInfo = null)
  22. {
  23. foreach (var logger in _loggers) logger.Info(summary, moreInfo);
  24. }
  25. public void Warn(string summary, object moreInfo = null)
  26. {
  27. foreach (var logger in _loggers) logger.Warn(summary, moreInfo);
  28. }
  29. public void Error(string summary, object moreInfo = null)
  30. {
  31. foreach (var logger in _loggers) logger.Error(summary, moreInfo);
  32. }
  33. public void Fatal(string summary, object moreInfo = null)
  34. {
  35. foreach (var logger in _loggers) logger.Fatal(summary, moreInfo);
  36. }
  37. }
  38. }