2008-10-20 2 views
10

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

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

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

  • Event Handler (как ItemAdded)
  • Таймер Работа
  • ...
+0

Вы задумывались о регистрации журналов SharePoint? – Nat 2008-10-20 19:57:15

+0

Да. Но я хочу иметь разные файлы журналов для каждого проекта или иметь центральную базу данных для журналов с простым webapp, чтобы увидеть эти журналы с необходимостью предоставления доступа к журналам ULS. – Nico 2008-10-20 20:00:20

ответ

0

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

1

Во-первых, вам нужно будет изменить файл 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.

+0

спасибо, но это только поможет мне в «веб-части» SharePoint. Тем не менее, мне также нужно регистрировать все, что происходит асинхронно, например, обработчик событий, функция, задания и т. Д. – Nico 2008-10-22 16:18:52

9

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

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

0

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