====== Логирование и обработка ошибок на стороне сервера ====== Реализуется через класс **AppLogger**. Обращение к методам класса идет через сингелтон **AppLogger.Instance**. Методы: * **Log **– создание записи лога с ручным указание всех параметров; * **LogMessage **– создание записи лога с сообщением; * **LogException **– создание записи лога с исключением; * **LogOperationStart **– начать логирование операции; * **LogOperationEnd **– закончить логирование операции и записать данные в журнал. Методы **LogException**, **LogOperationStart ** и **LogOperationEnd ** нет необходимости использовать напря-мую. Если необходимо вести журнал исполнения определенного метода, то достаточно на него по-весить атрибут **[OperationLog]**. Атрибут так же можно повесить на весь класс. Если необходимо бо¬лее массовое покрытие кода, то можно в AssemblyInfo.cs указать, что логировать. Например: _FCKG_BLANK_TD_ [assembly: OperationLog(AttributeTargetTypes = "DevPark.WinterQueen.Web.*", AttributeTargetTypeAttributes = MulticastAttributes.Public, AttributeTargetMemberAttributes = MulticastAttributes.Public)] для логирования всех публичных методов всех публичных классов в пространстве имен DevPark.WinterQueen.Web. Регистрация ошибок исполнения приложения XAF реализована через обработчик события **ErrorHandling.CustomSendErrorNotification**. Записи логов хранятся в экземплярах класса **AppLogEntry**. В XAF-интерфейсе просмотр лога доступен через задачи Администратора в меню навигации. Что записывать в логи, указывается в свойстве **AppLogger.Instance.LoggedTypes** либо напрямую, либо при вызове функции **AppLogger.Instance.Init()**. По умолчанию значение свойство установлено так, чтобы вести запись всех событий: AppLogger.Instance.LoggedTypes = AppLogEntryType.Exception | AppLogEntryType.Message | AppLogEntryType.Operation ====== Логирование и обработка ошибок на стороне клиента ====== На стороне клиента добавлены глобальные обработчики событий **window.onerror**, **Ext.Ajax.requestexception**, **jQuery.ajaxError**. Логирование реализовано в классе **appWQ.sys.Logger** (псевдоним **Log**): * **Log.operation** – логирование исключение и времени исполнения указанного кода; например: Log.operation(function() { // какой-то код программы }); * **Log.trace, Log.debug, Log.warn, Log.error, Log.fatal, Log.fatalException** – добавляет в лог сообщение заданного уровня. В Default.aspx определены две переменные: * **SERVER_LOGGING_LEVEL** – уровень сообщений лога, с которого начинается отправка сообщений на сервера; * **CONSOLE_LOGGING_LEVEL** – уровень сообщений лога, с которого сообщения выводятся в консоль разработчика. Также на клиенте ведется локальный журнал истории вызовов. В текстовом варианте его можно получить через **Log.getFullJournal()**, в виде дерева вызовов –** Log.showJournal()**.