TestLogSink.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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 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 void Log(LogEventLevel level, string area, object source, string messageTemplate, params object[] propertyValues)
  28. {
  29. _callback(level, area, source, messageTemplate, propertyValues);
  30. }
  31. }
  32. }