Есть несколько очень простых шагов, чтобы заставить Log4Net работать с журналом событий с ASP.NET.
Ваши параметры:
Изменить пул приложений
Запустить пул приложений как LocalSystem
Или ... установить имя приложения, добавить реестрключ
Сначала настройте свой файл конфигурации , чтобы было имя приложения .
Это важно, если у вас есть проблема с разрешениями, потому что, если вы сверяетесь с источником , вы увидите, что EventLogAppender по умолчанию задает имя приложения (столбец источника в журнале событий), чтобы:
System.Threading.Thread.GetDomain (). FriendlyName
Это требует, чтобы ваше приложение создавало раздел реестра каждый раз, когда меняется имя, и это немного беспорядочно,Поэтому лучшее решение - установить имя вашего приложения.Вот пример раздела EventLogAppender, который отправляет каждый уровень ошибки, важной частью является строка ApplicationName:
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<param name="ApplicationName" value="MY-AWESOME-APP" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="INFO" />
</evaluator>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO"/>
<param name="LevelMax" value="FATAL"/>
</filter>
<layout type="log4net.Layout.PatternLayout">
<!-- The event log already logs the date so just log the message -->
<conversionPattern value="%message" />
</layout>
</appender>
Перед внесением этого изменения выполните следующие действия:
Создайте раздел реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\MY-AWESOME-APP
Создайте строковое значение внутри этого
Назовите его EventMessageFile
, установите его значение
C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ EventLogMessages.dll
Этот путь работает как в 64-битных, так и в 32-битных средах.
При использовании этого метода вам не нужно устанавливатьразрешения в реестре, и как только ключ выше создан, он должен просто работать.