SharePoint и Log4Net

Я ищу лучшие методы для интеграции log4net в SharePoint для веб-запроса, активации функций и всего материала таймера.

У меня есть несколько подпроектов в моей ферме, и я хотел бы иметь только один файл Log4Net.config.

[изменить]
Мне не только нужно настроить log4net для веб-приложения, что легко сделать (я использую global.asax и файл log4net.config, поэтому я могу изменить параметры журнала с перезагрузкой webapp), но мне также нужно записывать асинхронные события:

  • Обработчик событий (например, ItemAdded)
  • Работа с таймером
  • ...

Ответ 1

Я реализовал это недавно и придумал решение, которое сработало для меня.

Разверните конфигурационный файл log4net в 12 кустах и ​​dll log4net в GAC, используя решение с глобальной областью. Затем в вашем коде приложения явно инициализируется log4net из местоположения вашего глобального файла. Это позволяет вам регистрировать функции приемника, задания таймера и код веб-приложения.

[assembly: log4net.Config.XmlConfigurator(ConfigFile = 
    @"C:\Program Files\Common Files\Microsoft Shared\" + 
    @"Web Server Extensions\12\CONFIG\log4net.config", Watch = true)]

см. здесь http://www.codeproject.com/KB/sharepoint/SharepointLog4Net.aspx

Ответ 2

Во-первых, вам нужно будет изменить web.config, где находится виртуальный каталог SharePoint. Это связано с тем, что вам нужно добавить записи SafeControl, чтобы доверять сборке log4net. Вы можете обновить web.config программно, используя класс SPWebConfigModification в приемнике функций. Поскольку вам все равно необходимо изменить web.config, вам может потребоваться включить в него конфигурацию log4net внутри и не настроить внешнюю конфигурацию log4net.

Однако, если вы все равно хотите это сделать, это может сработать, если вы добавите следующее в файл web.config:

<configuration ...>
  ...
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>
  <log4net configSource="log4Net.config">
  ...
</configuration>

Затем файл log4net.config может жить вместе с вашим web.config. Как говорит Nat, вы можете развернуть этот файл как пакет решений.

Предполагая, что вы пытаетесь выполнить минимальное доверие, вам нужно будет обновить файл безопасности кода доступа, чтобы включить сборки log4net. Все ваши пользовательские коды SharePoint должны автоматически использовать вашу конфигурацию log4net.

Ответ 3

Вы можете освободить конфигурационный файл как часть пакета (ов) решения до 12 улей (используйте STSDev), чтобы создать любые пакеты). Это даст вам заданное местоположение для конфигурации, и любые изменения в нем могут быть выпущены контролируемым образом (то есть нет необходимости в ручном редактировании, просто откат и повторная установка решения).

Ответ 4

Я разработал функцию log4net и упаковал ее в файл wsp. Приемник функций добавляет http-модуль в файл web.config, а httpmodule загружает файл log4net.config из директории макетов, когда событие запуска приложения создается в модуле http.