Its pretty easy, yeah.
Create a LogListener Class which inherits from CustomTraceListener. A simple implementation could look like this (this is a listener that forwards logmessages to Gibraltar)
Create a LogListener Class which inherits from CustomTraceListener. A simple implementation could look like this (this is a listener that forwards logmessages to Gibraltar)
[ConfigurationElementType(typeof(CustomTraceListenerData))]
public class GibraltarTraceListener : CustomTraceListener
{
public GibraltarTraceListener()
{
LogMailer.Initialize();
}
public GibraltarTraceListener(string initializeData) : this() { }
public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data)
{
var entry = (LogEntry)data;
var severity = mapType(entry.Severity);
if (severity != LogMessageSeverity.None)
{
string title = entry.Title;
title = title.Substring(title.IndexOf(")") + 2);
Log.Write(severity, "Microsoft Logging", null, null, null, LogWriteMode.Queued, null, title, null, entry.Message);
}
}
public override void Write(string message) { }
public override void WriteLine(string message) { }
private LogMessageSeverity mapType(TraceEventType type)
{
switch (type)
{
case TraceEventType.Critical: return LogMessageSeverity.Critical;
case TraceEventType.Error: return LogMessageSeverity.Error;
case TraceEventType.Information: return LogMessageSeverity.Information;
case TraceEventType.Verbose: return LogMessageSeverity.Verbose;
case TraceEventType.Warning: return LogMessageSeverity.Warning;
default: return LogMessageSeverity.None;
}
}
}
Register the listener in App_Data/Composite/composite.config under loggingConfiguration/listeners like this<add listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.CustomTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.0.0.0" traceOutputOptions="None" type="Your_TraceListener, YourAssembly" name="CustomTraceListener" formatter="Text Formatter" />