пятница, 26 августа 2011 г.

Sharepoint 2010: Протоколирование

Про пользу протоколирования написано много, в том числе и мной.
В Sharepoint для протоколирования можно пользоваться стандартным методом
try
{
    var i = 0;
    var a = 2 / i;
}
catch (Exception ex)
{
    SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("My Category", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ex.Message, ex.StackTrace);
}

Но этот метод не лишен недостатков. Достаточно глянуть на карту и понять в чем дело

Как видно, в логах невозможно найти сообщение, оставленное нашим логгером.

Чтобы избежать этого неудобства, нужно использовать класс SPDiagnosticsServiceBase. Пример использования есть в статье.

Очень полезная статья может пригодиться при реализации собственного логгера с настройками в Центре Администрирования. Собственно эта статья была использована как один из источников при написании своего логгера.

Во время работы логгера обнаружил неприятную вещь: валилась ошибка
The EXECUTE permission was denied on the object ‘proc_putObject’, database ‘SharePoint_Config’, schema ‘dbo’.
Решение:
Не хватает прав у пользователя, под которым крутится текущий пул веб-приложений, в SQL на выполнение команд.

  • Открываем "SQL Server Management Studio"
  • Находим нашего пользователя в Security/Logins и жмём правую кнопку мыши
  • Выбираем меню Properties
  • Заходим в User Mapping и выбираем базу, указанную в сообщении об ошибке.
  • Выбираем роль "SharePoint_Shell_Access" для нашего пользователя. Жмём ОК


Комментариев нет:

Отправить комментарий

Еще статьи

2leep.com