Hello,
I have library without any xml file:
public class Log4NetEventLogger
{
#region Private Instance Fields
private string _loggerName;
private log4net.ILog _logger;
#endregion Private Instance Fields
#region constructor
public Log4NetEventLogger(string logerName)
{
_loggerName = logerName;
_logger = log4net.LogManager.GetLogger(_loggerName);
if (_logger.Logger.Repository.GetAppenders().Where(a =>
a.Name == "EventLogAppender").Count() == 0)
{
AddAppender(logerName,
CreateEventLogAppender("EventLogAppender"));
}
}
#endregion constructor
public void AddEntry(string contextInfo, string message,
EventLogEntryType eventType)
{
_logger = log4net.LogManager.GetLogger(_loggerName);
switch (eventType)
{
case EventLogEntryType.Error:
_logger.Error(message);
break;
case EventLogEntryType.Warning:
_logger.Warn(message);
break;
case EventLogEntryType.Information:
_logger.Info(message);
break;
case EventLogEntryType.SuccessAudit:
throw new NotImplementedException();
break;
case EventLogEntryType.FailureAudit:
throw new NotImplementedException();
break;
default:
throw new ArgumentOutOfRangeException("eventType");
}
public static void AddAppender(string loggerName,
log4net.Appender.IAppender appender)
{
log4net.ILog log = log4net.LogManager.GetLogger(loggerName);
log4net.Repository.Hierarchy.Logger l =
(log4net.Repository.Hierarchy.Logger)log.Logger;
l.AddAppender(appender);
}
private IAppender CreateEventLogAppender(string loggerName)
{
log4net.Appender.EventLogAppender appender = new
log4net.Appender.EventLogAppender();
appender.Name = "EventLogAppender";
appender.ApplicationName = loggerName;
appender.LogName = "MyDiary";
log4net.Layout.PatternLayout layout = new
log4net.Layout.PatternLayout();
layout.ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n";
layout.ActivateOptions();
appender.Layout = layout;
appender.ActivateOptions();
var filter = new log4net.Filter.LoggerMatchFilter();
filter.AcceptOnMatch = true;
var filterDeny = new log4net.Filter.DenyAllFilter();
var filterErrorType = new log4net.Filter.LevelRangeFilter();
filterErrorType.AcceptOnMatch = true;
//filterErrorType.LevelMin = Level.Error;
appender.AddFilter(filter);
appender.AddFilter(filterDeny);
appender.AddFilter(filterErrorType);
appender.ActivateOptions();
log4net.Config.BasicConfigurator.Configure(appender);
return appender;
}
}
}
I use it like this:
var myLogger = new Log4NetEventLogger("calculator");
myLogger.AddEntry("exception", "additionalInformation",
EventLogEntryType.Error);
I use windows xp as Administrator
It creates me new eventlog, but it doesn't add any new item to it. Why is
that ?
Thanks & Regards,