протоколирование событий дотнетнуке - синхронно?Потенциальные проблемы со скоростью? - PullRequest
1 голос
/ 19 июня 2010

Я хотел бы использовать систему ведения журнала DotNetNuke (как ведение журнала событий, так и запись исключений).

Однако меня беспокоит потенциальная проблема производительности, если мы начнем регистрировать слишком много событий.1004 * Записывает ли система ведения журнала события в базу данных асинхронно?Если нет, есть ли эффективный способ сделать это?Я не хотел бы заставлять конечного пользователя ждать нескольких записей в базе данных только для просмотра страницы.

Спасибо

1 Ответ

2 голосов
/ 19 июня 2010

Краткий ответ: зависит от конфигурации DNN. По умолчанию регистрация ведется синхронно.

Подробный ответ

В журнале событий используется LoggingProvider, настроенный в web.config.

DotNetNuke поставляется с DBLoggingProvider и XMLLoggingProvider. По умолчанию DotNetNuke использует DBLoggingProvider, который записывает в таблицу EventLog.

Как это сделать, зависит от настроек хоста и настроек просмотра событий на сайте. Если « Включить буфер журнала событий » в проверенных настройках хоста, регистрация должна быть асинхронной. Должно быть , поскольку асинхронное ведение журнала использует Планировщик, и если планировщик не включен или остановлен, ведение журнала будет немедленным.

Немедленное ведение журнала также может быть применено с помощью свойства LogInfo.BypassBuffering.

Настройки журнала событий определяют, что будет регистрироваться в зависимости от типа журнала. Если вы используете журналирование событий в своих модулях, вы должны передать тип журнала в методе EventLogController.AddLog. Я обычно использую EventLogType.HOST_ALERT, поскольку они легко распознаются в представлении журнала событий и регистрируются по умолчанию (в отличие от ADMIN_ALERT).

Для получения более подробной информации, проверьте реализацию AddLog в исходном коде DNN:

DBLoggingProvider.AddLog(ByVal LogInfo As LogInfo)

Смотрите также: Объяснение настроек хоста DotNetNuke

...