LogEngineImplement.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System;
  2. using Vinno.IUS.Common.Log;
  3. using Vinno.IUS.Common.Utilities.Executors;
  4. namespace Flyinsono.Client.Test
  5. {
  6. public class LogItem
  7. {
  8. /// <summary>
  9. /// Log level
  10. /// </summary>
  11. public LogLevel LogLevel { get; set; }
  12. /// <summary>
  13. /// Log content
  14. /// </summary>
  15. public string Content { get; set; }
  16. }
  17. public class LogEngineImplement : DefaultLogEngine
  18. {
  19. private SequenceExecutor<string> _logSequenceExecutor = new SequenceExecutor<string>("LogSequenceExecutor");
  20. private DateTime _today;
  21. Action<LogItem> _actionShowLogger;
  22. public LogEngineImplement(Action<LogItem> action)
  23. {
  24. _actionShowLogger = action;
  25. }
  26. public override void Write(LogLevel level, string msg)
  27. {
  28. var message = RecombinateMessage(level, msg);
  29. _logSequenceExecutor.Add(ExecuteWrite, message);
  30. _actionShowLogger?.Invoke(new LogItem() { LogLevel = level, Content = message });
  31. }
  32. private bool ExecuteWrite(string message)
  33. {
  34. try
  35. {
  36. if (DateTime.Today != _today)
  37. {
  38. InitializeLogger();
  39. _today = DateTime.Today;
  40. }
  41. WriteMessage(message);
  42. }
  43. catch
  44. {
  45. }
  46. return true;
  47. }
  48. public override void Dispose()
  49. {
  50. _logSequenceExecutor.Dispose();
  51. base.Dispose();
  52. }
  53. }
  54. }