TestLogSink.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright (c) The Avalonia Project. All rights reserved.
  2. // Licensed under the MIT license. See licence.md file in the project root for full license information.
  3. using System;
  4. using System.Reactive.Disposables;
  5. using Avalonia.Logging;
  6. namespace Avalonia.UnitTests
  7. {
  8. public delegate void LogCallback(
  9. LogEventLevel level,
  10. string area,
  11. object source,
  12. string messageTemplate,
  13. params object[] propertyValues);
  14. public class TestLogSink : ILogSink
  15. {
  16. private readonly LogCallback _callback;
  17. public TestLogSink(LogCallback callback)
  18. {
  19. _callback = callback;
  20. }
  21. public static IDisposable Start(LogCallback callback)
  22. {
  23. var sink = new TestLogSink(callback);
  24. Logger.Sink = sink;
  25. return Disposable.Create(() => Logger.Sink = null);
  26. }
  27. public bool IsEnabled(LogEventLevel level)
  28. {
  29. return true;
  30. }
  31. public void Log(LogEventLevel level, string area, object source, string messageTemplate)
  32. {
  33. _callback(level, area, source, messageTemplate);
  34. }
  35. public void Log<T0>(LogEventLevel level, string area, object source, string messageTemplate, T0 propertyValue0)
  36. {
  37. _callback(level, area, source, messageTemplate, propertyValue0);
  38. }
  39. public void Log<T0, T1>(LogEventLevel level, string area, object source, string messageTemplate,
  40. T0 propertyValue0, T1 propertyValue1)
  41. {
  42. _callback(level, area, source, messageTemplate, propertyValue0, propertyValue1);
  43. }
  44. public void Log<T0, T1, T2>(LogEventLevel level, string area, object source, string messageTemplate,
  45. T0 propertyValue0, T1 propertyValue1, T2 propertyValue2)
  46. {
  47. _callback(level, area, source, messageTemplate, propertyValue0, propertyValue1, propertyValue2);
  48. }
  49. public void Log(LogEventLevel level, string area, object source, string messageTemplate,
  50. params object[] propertyValues)
  51. {
  52. _callback(level, area, source, messageTemplate, propertyValues);
  53. }
  54. }
  55. }