2009-10-28 1 views
1

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

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

Может кто-то пожалуйста, помогите мне найти ответы на вопросы:

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

Спасибо!

ответ

2

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

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

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

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

+0

Спасибо, Flo! Очень полезно. Но как бы вы передали путь к log4net.config (скажем, до 12 ульев) к заданию? Я совершенно новичок в sharepoint, но насколько я знаю, что работа может быть запущена на другом компьютере –

+0

Да, вы правы, вы не можете определить, на каком сервере будет выполняться задание, но это определенно будет работать на внешнем сервере. Применяя свой файл конфигурации как функцию через решение SharePoint (файл .wsp), он будет предоставлен каждому серверу шрифтов вашей фермы. Таким образом, задание может получить доступ к файлу независимо от того, на каком сервере он выполняется. – Flo

 Смежные вопросы

  • Нет связанных вопросов^_^