SharePoint и Log4Net - PullRequest
       41

SharePoint и Log4Net

10 голосов
/ 20 октября 2008

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

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

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

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

Ответы [ 4 ]

9 голосов
/ 20 ноября 2009

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

Разверните файл конфигурации 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

1 голос
/ 21 октября 2008

Во-первых, вам нужно изменить файл 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. Как говорит Нат, вы можете развернуть этот файл как пакет решения.

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

0 голосов
/ 08 февраля 2010

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

0 голосов
/ 21 октября 2008

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

...