Это, вероятно, не проблема с SiteCore как таковая, но я включил его для полноты. У меня sitecore 6.3, работающий под IIS7 с использованием пользовательского удостоверения для пула приложений. Я не могу заставить Sitecore записать информацию о своем журнале (используя настройки log4net по умолчанию) в журнал событий. Я следовал этому совету: http://logging.apache.org/log4net/release/faq.html#Why%20doesn%27t%20the%20EventLogAppender%20work? и хотя он работает нормально, когда я делаю пользовательскую идентификацию членом группы администраторов, мне нужно найти способ заставить ее работать в работе без такого взлома безопасности.
Странная вещь в том, что у меня есть MSI, который устанавливает его (работает под учетной записью, которая является членом группы администраторов) и создает для меня правильные ключи реестра в журнале событий, и все же, несмотря на это, я все еще получаю следующая ошибка при запуске приложения с использованием пользовательского удостоверения (без участия администратора).
log4net:ERROR DOMConfigurator: Could not create Appender [EventLogAppender] of type [log4net.Appender.EventLogAppender]. Reported error follows.
System.Security.SecurityException: Requested registry access is not allowed.
at Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable)
at System.Diagnostics.EventLog.GetEventLogRegKey(String machine, Boolean writable)
at System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly)
at System.Diagnostics.EventLog.DeleteEventSource(String source, String machineName)
at log4net.Appender.EventLogAppender.ActivateOptions()
at log4net.Repository.Hierarchy.DOMHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
The Zone of the assembly that failed was:
MyComputer
log4net:ERROR DOMConfigurator: Appender named [EventLogAppender] not found.
Думая, что я могу сузить проблему с разрешением реестра, я предоставил всем полные права доступа к следующему разделу реестра и подразделам, но он тоже не работал: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog
Настраиваемый идентификатор входит в следующие группы:
- Читатели журнала событий
- IIS_USERS
- Пользователи системного монитора
Я также видел следующий вопрос , который, кажется, задает то же самое. Кажется, в статье Microsoft предлагается, что это может быть проблемой с ACL в журнале событий, и приводятся примеры того, как вы можете изменить SSDL, но я бы предпочел этого избежать, если это вообще возможно.
EDIT:
У меня работает другой сервер, где журнал заполняется нормально. Пользовательский идентификатор был членом администраторов, поэтому я отозвал его и перезагрузил, пытаясь преднамеренно сломать его, но не могу. Config идентичен на обоих полях и идентичен для запуска MSI, который создает ключи реестра. Запустите procmon на обоих (после выполнения IISReset и повторного запуска пула приложений), чтобы проверить активность реестра. Странно то, что на поле, которое работает, вы получаете 477 имен не найденных записей для моего источника событий в неправильных местах (Приложение и другой Custom EventLog "MyCompany"). Нет попаданий для места, где ведется логирование - MyCompany \ MyCompany.SiteCore. Хотя на поле, которое не работает, он, похоже, запрашивает чтение правильного ключа (хотя и только 6 раз), но затем вы получаете ошибку доступа к реестру Log4Net.