Sharepoint Timer Job и log4net - PullRequest
       12

Sharepoint Timer Job и log4net

1 голос
/ 28 октября 2009

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

Все отлично с log4net в самой функции (просто поместил log4net.config рядом с web.config и все в порядке), но я совершенно не представляю, как инициализировать log4net из задания таймера (учитывая, что он запускается не IIS, но OSWTIMER).

Может кто-нибудь помочь мне найти ответы на вопросы:

  1. Где хранить log4net.config и как передать его на работу?
  2. Нужно ли инициализировать log4net каждый раз, когда вызывается метод Execute ()?

Спасибо!

1 Ответ

2 голосов
/ 28 октября 2009

Давным-давно, с тех пор, как я использовал log4net, но, если я правильно помню, вы можете хранить свой файл конфигурации там, где захотите, и позволить log4net загрузить его оттуда во время инициализации регистратора.

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

2) Я думаю, вам придется каждый раз инициализировать регистратор, так как SPJobDefinition (класс задания таймера) хранится в базе данных, когда он не запускается. Функциональность для сохранения задания таймера в базе данных взята из базового класса SPJobDefinition SPPersistedObject . Переменные-члены класса, унаследованные от SPPersistedObject, которые должны храниться вместе с классом в базе данных, должны быть помечены атрибутом [Persisted]. Но насколько я знаю, постоянные объекты могут быть только элементарными типами данных (int, long, string, ...).

Таким образом, хранение объекта Log4net Logger в базе данных не будет работать или, по крайней мере, не поддерживается. Поэтому каждый раз, когда ваша работа загружается из базы данных, объект Logger должен снова инициализироваться.

...