TestLogSink.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System;
  2. using System.Reactive.Disposables;
  3. using Avalonia.Logging;
  4. namespace Avalonia.UnitTests
  5. {
  6. public delegate void LogCallback(
  7. LogEventLevel level,
  8. string area,
  9. object source,
  10. string messageTemplate,
  11. params object[] propertyValues);
  12. public class TestLogSink : ILogSink
  13. {
  14. private readonly LogCallback _callback;
  15. public TestLogSink(LogCallback callback)
  16. {
  17. _callback = callback;
  18. }
  19. public static IDisposable Start(LogCallback callback)
  20. {
  21. var sink = new TestLogSink(callback);
  22. Logger.Sink = sink;
  23. return Disposable.Create(() => Logger.Sink = null);
  24. }
  25. public bool IsEnabled(LogEventLevel level, string area)
  26. {
  27. return true;
  28. }
  29. public void Log(LogEventLevel level, string area, object source, string messageTemplate)
  30. {
  31. _callback(level, area, source, messageTemplate);
  32. }
  33. public void Log(LogEventLevel level, string area, object source, string messageTemplate,
  34. params object[] propertyValues)
  35. {
  36. _callback(level, area, source, messageTemplate, propertyValues);
  37. }
  38. }
  39. }