This is something I wanted to do as a quick work around (rather than writing my own log4net appender) to being able to write SuccessAudit and FailureAudit events to the event log (something which log4net does not support out the box).
Here's the method I used:
private static ILog _Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static log4net.Appender.EventLogAppender _eventLogAppender = null;
// This only works if you have an EventLogAppender configured.
public static void WriteToEventLog(string Message, System.Diagnostics.EventLogEntryType Type)
{
if (_eventLogAppender == null)
{
log4net.Appender.IAppender[] appenders = _Log.Logger.Repository.GetAppenders();
foreach (log4net.Appender.IAppender appender in appenders)
{
if (appender is log4net.Appender.EventLogAppender)
{
_eventLogAppender = (log4net.Appender.EventLogAppender)appender;
break;
}
}
}
if (_eventLogAppender != null) // Confirm an EventLogAppender has been configured
System.Diagnostics.EventLog.WriteEntry(_eventLogAppender.ApplicationName, Message, Type);
}
Tim