Что такое система событий
Журнал событий в Windows: как его открыть и найти информацию об ошибке
Доброго дня!
Разумеется, в некоторых случаях эти записи могут быть очень полезными. Например, при поиске причин возникновения ошибок, синих экранов, внезапных перезагрузок и т.д. Отмечу, что если у вас установлена не официальная версия Windows — может так стать, что журналы у вас отключены. 😢
В общем, в этой заметке покажу азы работы с журналами событий в Windows (например, как найти ошибку и ее код, что несомненно поможет в диагностике).
Работа с журналом событий (для начинающих)
Как его открыть
Этот вариант универсальный и работает во всех современных версиях ОС Windows.
eventvwr — команда для вызова журнала событий
Система и безопасность
Просмотр событий — Администрирование
Актуально для пользователей Windows 10/11.
1) Нажать по значку с «лупой» на панели задач, в поисковую строку написать «событий» и в результатах поиска ОС Windows предоставит вам ссылку на журнал (см. скрин ниже). 👇
Windows 10 — события
2) Еще один способ: нажать сочетание Win+X — появится меню со ссылками на основные инструменты, среди которых будет и журнал событий.
Журналы Windows
Наибольшую пользу (по крайней мере, для начинающих пользователей) представляет раздел «Журналы Windows» (выделен на скрине выше). Довольно часто при различных неполадках приходится изучать как раз его.
В нем есть 5 вкладок, из которых 3 основных: «Приложение», «Безопасность», «Система». Именно о них пару слов подробнее:
Как найти и просмотреть ошибки (в т.ч. критические)
Надо сказать, что Windows записывает в журналы очень много различной информации (вы в этом можете убедиться, открыв любой из них). Среди стольких записей найти нужную ошибку не так просто. И именно для этого здесь предусмотрены спец. фильтры. Ниже покажу простой пример их использования.
Система — фильтр текущего журнала / Кликабельно
После указать дату, уровень события (например, ошибки), и нажать OK.
В результате вы увидите отфильтрованный список событий. Ориентируясь по дате и времени вы можете найти именно ту ошибку, которая вас интересует.
Например, на своем подопытном компьютере я нашел ошибку из-за которой он перезагрузился (благодаря коду ошибки и ее подробному описанию — можно найти решение на сайте Microsoft).
Представлены все ошибки по дате и времени их возникновения / Кликабельно
Т.е. как видите из примера — использование журнала событий очень даже помогает в решении самых разных проблем с ПК.
Можно ли отключить журналы событий
Можно! Только нужно ли? (хотя не могу не отметить, что многие считают, что на этом можно сэкономить толику дискового пространства, плюс система более отзывчива и меньше нагрузка на жесткий диск)
Для отключения журналов событий нужно:
Службы — журналы событий
Как использовать журнал событий системы Windows 10
Средство просмотра событий Windows является одним из инструментов администрирования операционной системы Microsoft.
В первой части руководства будет объяснено, для чего используется этот инструмент и какая информация хранится в его регистрах.
Во второй части руководства мы увидим, как прочитать свойства события и как создать персонализированный вид событий.
Что такое средство просмотра событий Windows
Просмотрщик событий – самый мощный диагностический инструмент в Windows. Его использование имеет фундаментальное значение для контроля целостности системы, поскольку предоставляет подробную информацию обо всех событиях, происходящих на ПК. Событие представляет собой явление, которое происходит внутри системы и передается наружу, – к пользователю или к другим программам, и обычно соответствует состоянию или изменениям конфигурации. События регистрируются службой журнала событий Windows, а их история сохраняется в соответствующих системных журналах.
Средство просмотра событий Windows помогает в анализе проблемы, поскольку позволяет просматривать аппаратные и программные аномалии различной природы (сбой при запуске службы, сбой системы, невозможность установить обновление, повреждение в структуре файловой системы, конфликт IP-адресов).
Как запустить средство просмотра событий Windows
Давайте начнем с руководства по просмотру событий Windows, объяснив, как его запустить.
Важно: просмотрщик событий может запускаться как обычным пользователем, так и администратором (→ разница между обычным пользователем и администратором). Однако, в первом случае регистр безопасности будет недоступен.
Обзор и сводка по событиям
Когда мы откроем средство просмотра событий, на панели сведений отобразится сводная информация об административных событиях.
Эту информацию можно просмотреть в любое время, щелкнув запись средства просмотра событий (локальный компьютер) в дереве консоли (левая панель).
Это поле позволяет увидеть, произошли ли значительные события по типу за последний час, день или неделю.
Поместите указатель мыши на код события нажмите правую кнопку мыши. Затем выберите Просмотреть все экземпляры этого события. Вы увидите список событий, взятых из нескольких журналов, что позволит избежать необходимости искать событие в нескольких местах.
Журналы просмотра событий Windows
Средство просмотра событий Windows обрабатывает различные типы регистров, разделенных на две основные категории: Журналы Windows и Журналы приложений и служб.
Чтобы просмотреть информацию об этих журналах, в дереве консоли средства просмотра событий (левая панель) щелкните стрелку рядом с категорией журнала, который хотите просмотреть. Нажмите раздел, который вас интересует.
В центральном окне отметьте событие, которое хотите проанализировать. Нажмите на событие, чтобы получить описание события и его наиболее важные свойства (видимые на вкладке «Общие»), или дважды щелкните событие, чтобы открыть окно «Свойства события».
Давайте посмотрим подробно, что содержат журналы средства просмотра событий Windows.
Журналы Windows
В журнале Windows хранятся события, относящиеся ко всей системе. Они делятся на следующие категории:
Журналы приложений и служб
В Журнал приложений и служб сохраняются события, относящиеся к отдельным программам, приложениям и специфическим службам Windows.
Разница между этими журналами и журналами Windows заключается в том, что журналы приложений и служб относятся к конкретной программе или к функциональности, а остальные относятся ко всей системе.
Если мы развернем узел Microsoft, то увидим папку Windows. Эта папка содержит папку для каждой из многих функций Windows.
Просмотр логов и событий
Когда мы выбираем журнал на левой панели средства просмотра событий Windows, на центральной панели отображается список его событий, упорядоченный в обратном хронологическом порядке.
В поле ниже показано содержимое, относящееся к выбранному событию.
Окно свойства события
Чтобы просмотреть детали одного события, мы должны использовать окно Свойства события. Чтобы открыть его, дважды щелкните левой кнопкой мыши на событии в центральной панели.
В окне «Свойства события» мы можем выбрать вкладку Общие или Подробности.
Вкладка «Общие»
Вкладка «Общие» содержит следующую информацию:
Вкладка «Подробности»
Вкладка «Подробности» содержит дополнительную информацию о событии.
Информация разделена на два раздела (расширяется нажатием + ):
Получить дополнительную информацию о событиях
Если вы хотите получить дополнительную информацию, предоставляемую средством просмотра событий Windows, вы можете посетить сайт EventID.net. EventID.net предоставляет базу данных, содержащую тысячи событий с соответствующими комментариями или статьями, предоставленными инженерами сайта, а также внешними сотрудниками.
Поиск может быть выполнен путём ввода идентификатора события, источника или одного или нескольких ключевых слов.
Выполнить действие в ответ на событие
Средство просмотра событий Windows предлагает возможность настроить задачу (например, запуск программы) для автоматического запуска при записи определенного события.
Чтобы использовать эту функцию, запустите просмотрщик событий. В дереве консоли выберите журнал, содержащий событие, которое мы хотим связать с действием.
Щелкните правой кнопкой мыши по событию и выберите «Привязать действие к событию…». Откроется окно мастера основных действий. Следуйте инструкциям для создания действия по событию.
9. Система событий
9.1. Отличительные особенности
Факт изменений в УВВ называется событием. События обычно полностью совпадают с условиями прерываний УВВ. Для соединения между собой событий разных УВВ предусмотрена специальная сеть маршрутизации, которая называется сетью маршрутизации событий. На рисунке 9.1 представлена укрупненная функциональная схема системы событий с сетью маршрутизации событий и связываемых ею УВВ. Данная система отличается высокой гибкостью. Ее можно использовать для простой маршрутизации сигналов, функций выводов или для упорядочивания событий.
Максимальная задержка между генерацией события в одном УВВ и запуском действий в другом или других УВВ составляет не более двух циклов синхронизации ЦПУ.
Система событий функционирует в двух режимах работы МК: активном и IDLE.
Рисунок 9.1. Функциональная схема системы событий
Сеть маршрутизации событий может напрямую связывать между собой аналогово-цифровые преобразователи, цифро-аналоговые преобразователи, аналоговые компараторы (ACx), порты ввода-вывода (PORTx), счетчик реального времени (RTC), таймеры-счетчики (T/C) и модуль инфракрасной связи (IRCOM). События можно также генерировать программно.
Все события всех УВВ всегда передаются по сети маршрутизации событий. Она состоит из восьми программно-конфигурируемых мультиплексоров, позволяющих задать, какое именно событие необходимо соединить с каналом событий. Все восемь каналов событий соединены с УВВ, допускающих возможность использования событий. Кроме того, у каждого из этих УВВ предусмотрена возможность настройки использования событий из одного или нескольких каналов событий, приводящие к автоматическому запуску программно-заданного действия.
Журналы Windows
Операционная система Windows, системные службы и приложения записывают события и ошибки в системные журналы, чтобы в дальнейшем у системного администратора была возможность проверки операционной системы и диагностики проблем.
Получить доступ к этим записям можно через встроенное приложение Просмотр событий (Event Viewer). Есть несколько вариантов запуска данного приложения:
В Диспетчере серверов в разделе Средства выбрать Просмотр событий (Server Manager – Tools – Event Viewer):
Описание интерфейса программы
Окно программы состоит из следующих компонентов:
Для удобства просмотра и управления системные журналы разбиты по категориям:
В разделе Журналы приложений и служб (Applications and Services Logs) можно найти более детальную информацию о событиях отдельных служб и приложений, зарегистрированных в операционной системе, что бывает полезно при диагностике проблем в работе отдельных сервисов.
Сами события также разделяются на типы:
Работа с журналами
Службы и приложения могут генерировать огромное количество самых разнообразных событий. Для простоты доступа к нужным записям журнала можно использовать функцию фильтрации журнала:
Правый клик по журналу – Фильтр текущего журнала… (>Filter Current Log…), либо выбрать данную функцию в панели быстрых действий. Открывшееся окно позволяет настроить фильтр и отобразить только те события, которые необходимы в данный момент:
Можно задать временной период, уровни события, выбрать журналы и конкретные источники событий. Если известны коды событий, которые нужно включить или исключить из фильтра, их также можно указать.
Когда необходимость в фильтрации событий отпадет, ее можно отключить действием Очистить фильтр (Clear Filter):
Приложение Просмотр событий (Event Viewer) позволяет также настроить дополнительные свойства журналов. Доступ к настройкам можно получить через панель быстрых действий, либо через контекстное меню журнала – правый клик по журналу – Свойства (Properties):
В открывшемся окне настроек можно увидеть путь, по которому сохраняется файл журнала, текущий размер, а также можно задать максимальный размер файла:
В нижней части окна можно выбрать вариант действия при достижении журналом максимального значения:
EventBus — Система событий для Unity
В этой статье я расскажу вам о том, что такое система событий применительно к Unity. Изучим популярные методы и подробно разберем реализацию на интерфейсах, с которой я познакомился, работая в Owlcat Games.
Содержание
1. Что такое система событий?
Любая игра состоит из множества систем: UI, звук, графика, ввод и тд и тп. Эти системы неизбежно взаимодействуют:
Некоторые системы могут быть сильно связаны, например ввод и движение персонажа. В таких случаях можно вызывать нужный метод напрямую. Но если системы связаны слабо, гораздо лучше использовать систему событий. Давайте посмотрим, как это может работать на примере с сохранением.
Такая реализация системы служит лишь примером. Использование строк, как меток событий очень багоопасно и неудобно.
В широком смысле система событий — это общедоступный объект, чаще всего статический класс. У него есть метод подписки на определенные события и метод вызова этих событий. Все остальное — детали.
2. Существующие реализации
В большинстве случаев методы подписки и вызова будут выглядеть примерно следующим образом:
Рассмотрим самые популярные реализации, опираясь на эту схему.
2.1. Подписка по ключу
2.2. Подписка по типу события
Этот метод использует обобщенные методы, что позволяет нам жестко задать аргументы.
2.3. Подписка по типу подписчика
Этот способ как раз используется в нашем проекте. В нем мы опираемся на интерфейсы, которые реализует подписчик. Объяснение принципа его работы оставлю для следующей главы, здесь покажу лишь пример.
3. Реализация на интерфейсах
В угоду понятности и краткости в выкладках ниже убраны некоторые детали. Без них система будет багоопасной, но для понимания основного принципа они не важны. Тем не менее мы рассмотрим их в разделе «Тонкости реализации».
3.1. Подписка на событие
В нашем случае в качестве ключа выступает тип подписчика, а точнее интерфейсов, который этот тип реализует.
Рассмотрим на примере быстрого сохранения. Создадим интерфейс, который будет выступать в роли ключа для такого события:
Для того, чтобы интерфейс мог выступать ключом, он должен наследовать IGlobalSubscriber. Этот позволит системе отличать интерфейсы-ключи от всех остальных, скоро увидим как именно. Сам интерфейс IGlobalSubscriber не содержит никаких свойств и методов, он лишь метка.
Теперь подписка и отписка будут выглядеть очень просто:
Метод GetSubscriberTypes будет описан чуть ниже. Он возвращает список типов интерфейсов-ключей, которые реализует подписчик. В нашем случае это будет список из одного элемента: IQiuckSaveHandler — хотя в реальности SaveLoadManager может реализовать несколько интерфейсов.
А вот и реализация GetSubscribersTypes :
Итак, в качества ключей в EventBus выступают интерфейсы, которые реализует подписчик.
3.2. Вызов события
Напомню, что мы все еще рассматриваем пример с быстрым сохранением. InputManager отслеживает нажатие на кнопку ‘S’, после чего вызывает событие быстрого сохранения.
Вот как это будет выглядеть в нашей реализации:
Давайте посмотрим на метод RaiseEvent :
Описание интерфейсов в итоге определяет события, которые мы можем вызывать.
3.3. В чем прелесть интерфейсов
Интерфейс может реализовать более одного метода. Для нашего примера в реальности более логичным мог бы оказаться такой интерфейс:
Таким образом мы подписываемся не по одному методу, а сразу группой методов, которые объединены в один интерфейс.
Также важно отметить, что передавать какие-либо параметры в такой реализации как никогда просто. Рассмотрим пример 1 из начала статьи про онлайн шутер. Работа системы событий могла бы выглядеть следующим образом.
Интерфейсы позволяют очень гибко определять набор возможных событий и их сигнатуру.
4. Тонкости реализации
Как и обещал, рассмотрим некоторые технические детали, пропущенные в прошлом разделе.
4.1. Отказоустойчивость
Код внутри любого из подписчиков может привести к ошибке. Чтобы это не оборвало цепочку вызовов, обнесем это место try catch :
4.2. Кеширование типов подписчиков
Функция GetSubscribersTypes работает при помощи рефлексии, а рефлексия всегда работает очень медленно. Мы не можем полностью избавиться от этих вызовов, но можем закешировать уже пройденные значения.
4.3. Отписка во время события
Мы еще не описывали здесь метод отписки, но скорее всего он мог бы выглядеть как-то так:
И такой метод будет работать в большинстве случаев. Но рано или поздно при вызове очередного события мы можем получить ошибку вида
Такая ошибка возникает, если внутри прохода по какой-то коллекции при помощи foreach мы удалим элемент из этой коллекции.
В нашем случае проблема возникает, если во время вызова события один из подписчиков отписывается.
Теперь обновим наш словарь в EventBus :
После этого обновим метод вызова события RaiseEvent :
В теории этой ситуации может и не возникнуть, но на практике рано или поздно это происходит. Вы можете заметить, что мы беспокоимся только об удалении из коллекции, но не думаем о добавлении во время прохода. Вообще было бы правильно и этот случай обработать, но на практике у нас этой проблемы ни разу не возникало. Но если возникнет у вас, вы уже будете знать в чем дело.
5. Завершение
Большинство систем событий похожи друг на друга. Они имеют в основе такую же подписку по ключу и реализованы внутри тоже при помощи словаря. Проблема удаления во время перебора для них тоже актуальна.
Наше решение отличается использованием интерфейсов. Если немного задуматься, то использование интерфейсов в системе событий является очень логичным. Ведь интерфейсы изначально придуманы для определения возможностей объекта. В нашем случае речь идет о возможностях реагировать на те или иные события в игре.
В дальнейшем систему можно развивать под конкретный проект. Например в нашей игре существуют подписки на события конкретного юнита. Еще на вызов и завершение какого-то механического события.