ExternalLogWriterWrapper.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using System;
  2. using System.Collections.Generic;
  3. namespace Wayne.Lib.Log
  4. {
  5. /// <summary>
  6. /// A log writer that writes the log to an external log writer class.
  7. /// </summary>
  8. internal class ExternalLogWriterWrapper : LogWriter
  9. {
  10. #region Fields
  11. private bool disposed;
  12. private string externalLogType;
  13. private string externalLogName;
  14. private LogTextWritingParameters writingParameters;
  15. private Dictionary<string, string> parameters;
  16. #endregion
  17. #region Construction
  18. public ExternalLogWriterWrapper(string logName, LogConfigExternalLogWriterOutput output)
  19. : base(logName)
  20. {
  21. externalLogType = output.ExternalLogType;
  22. externalLogName = output.ExternalLogName;
  23. writingParameters = new LogTextWritingParameters(output.DateTimeFormat, output.EntityLogKind, output.SuppressCategory, true);
  24. parameters = new Dictionary<string, string>(output.Params);
  25. }
  26. #endregion
  27. #region IDisposable Members
  28. /// <summary>
  29. /// Internal dispose method.
  30. /// </summary>
  31. /// <param name="disposing"></param>
  32. /// <param name="reason"></param>
  33. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
  34. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2102:CatchNonClsCompliantExceptionsInGeneralHandlers")]
  35. protected override void Dispose(bool disposing, string reason)
  36. {
  37. if (!disposed)
  38. {
  39. try
  40. {
  41. }
  42. catch (Exception) { }
  43. disposed = true;
  44. }
  45. }
  46. #endregion
  47. #region Public Properties
  48. public string ExternalLogType
  49. {
  50. get { return externalLogType; }
  51. }
  52. public string ExternalLogName
  53. {
  54. get { return externalLogName; }
  55. }
  56. public LogTextWritingParameters WritingParameters
  57. {
  58. get { return writingParameters; }
  59. }
  60. public Dictionary<string, string> Parameters
  61. {
  62. get { return parameters; }
  63. }
  64. #endregion
  65. #region Public Methods
  66. public override void PerformWrite(LogEntry logEntry)
  67. {
  68. if (disposed)
  69. return;
  70. PerformLogEntry(logEntry);
  71. }
  72. public override bool Equals(object obj)
  73. {
  74. ExternalLogWriterWrapper externalLogWriterWrapper = obj as ExternalLogWriterWrapper;
  75. if (externalLogWriterWrapper != null)
  76. {
  77. return externalLogWriterWrapper.externalLogType.Equals(externalLogType) &&
  78. externalLogWriterWrapper.externalLogName.Equals(externalLogName);
  79. }
  80. return false;
  81. }
  82. public override int GetHashCode()
  83. {
  84. return externalLogType.GetHashCode() ^ externalLogName.GetHashCode();
  85. }
  86. #endregion
  87. #region Private Methods: Writing
  88. private void PerformLogEntry(LogEntry logEntry)
  89. {
  90. Logger.PerformExternalLogEntry(this, logEntry);
  91. }
  92. #endregion
  93. }
  94. }