using System;
using System.Collections.Generic;
namespace Wayne.Lib.Log
{
///
/// A log writer that writes the log to an external log writer class.
///
internal class ExternalLogWriterWrapper : LogWriter
{
#region Fields
private bool disposed;
private string externalLogType;
private string externalLogName;
private LogTextWritingParameters writingParameters;
private Dictionary parameters;
#endregion
#region Construction
public ExternalLogWriterWrapper(string logName, LogConfigExternalLogWriterOutput output)
: base(logName)
{
externalLogType = output.ExternalLogType;
externalLogName = output.ExternalLogName;
writingParameters = new LogTextWritingParameters(output.DateTimeFormat, output.EntityLogKind, output.SuppressCategory, true);
parameters = new Dictionary(output.Params);
}
#endregion
#region IDisposable Members
///
/// Internal dispose method.
///
///
///
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2102:CatchNonClsCompliantExceptionsInGeneralHandlers")]
protected override void Dispose(bool disposing, string reason)
{
if (!disposed)
{
try
{
}
catch (Exception) { }
disposed = true;
}
}
#endregion
#region Public Properties
public string ExternalLogType
{
get { return externalLogType; }
}
public string ExternalLogName
{
get { return externalLogName; }
}
public LogTextWritingParameters WritingParameters
{
get { return writingParameters; }
}
public Dictionary Parameters
{
get { return parameters; }
}
#endregion
#region Public Methods
public override void PerformWrite(LogEntry logEntry)
{
if (disposed)
return;
PerformLogEntry(logEntry);
}
public override bool Equals(object obj)
{
ExternalLogWriterWrapper externalLogWriterWrapper = obj as ExternalLogWriterWrapper;
if (externalLogWriterWrapper != null)
{
return externalLogWriterWrapper.externalLogType.Equals(externalLogType) &&
externalLogWriterWrapper.externalLogName.Equals(externalLogName);
}
return false;
}
public override int GetHashCode()
{
return externalLogType.GetHashCode() ^ externalLogName.GetHashCode();
}
#endregion
#region Private Methods: Writing
private void PerformLogEntry(LogEntry logEntry)
{
Logger.PerformExternalLogEntry(this, logEntry);
}
#endregion
}
}