[{"data":1,"prerenderedAt":474},["ShallowReactive",2],{"navigation_docs":3,"-modules-problems-loglevel":238,"-modules-problems-loglevel-surround":471},[4,45,60],{"title":5,"description":6,"icon":7,"path":8,"stem":9,"children":10},"Методология",null,"ruler","\u002Fmethodology","1.methodology",[11,15,20,25,30,35,40],{"title":12,"path":8,"stem":13,"description":14},"bxshef: методология и проверка навыков","1.methodology\u002Findex","Как писать навыки ИИ-агентов для Битрикса и как проверять, что им можно верить",{"title":16,"path":17,"stem":18,"description":19},"Стандарт навыка","\u002Fmethodology\u002Fstandard","1.methodology\u002F1.standard","11 правил, каждое из провала на стенде",{"title":21,"path":22,"stem":23,"description":24},"Методология проверки","\u002Fmethodology\u002Fmethod","1.methodology\u002F2.method","lint → eval → стенд; что измерено",{"title":26,"path":27,"stem":28,"description":29},"bxshef — CLI","\u002Fmethodology\u002Fbxshef","1.methodology\u002F3.bxshef","lint, eval, feedback",{"title":31,"path":32,"stem":33,"description":34},"GitHub Action","\u002Fmethodology\u002Faction","1.methodology\u002F4.action","тот же lint + eval в любом репозитории навыков",{"title":36,"path":37,"stem":38,"description":39},"Заготовка репозитория","\u002Fmethodology\u002Ftemplate","1.methodology\u002F5.template","с чего начать автору модуля",{"title":41,"path":42,"stem":43,"description":44},"Приёмник отзывов","\u002Fmethodology\u002Ffeedback","1.methodology\u002F6.feedback","куда уходят отзывы ИИ-агентов",{"title":46,"description":6,"icon":47,"path":48,"stem":49,"children":50},"Навыки","sparkles","\u002Fskills","2.skills",[51,55],{"title":52,"path":48,"stem":53,"description":54},"Навыки shef.*","2.skills\u002Findex","npx skills add bx-shef\u002Fskills",{"title":56,"path":57,"stem":58,"description":59},"shef-feedback","\u002Fskills\u002Fshef-feedback","2.skills\u002F1.shef-feedback","Отправить отзыв о навыке shef-* или навыке команды. Брать ВСЕГДА, когда просят оставить или отправить отзыв о навыке — даже если сам навык в диалоге не виден, —",{"title":61,"description":6,"icon":62,"path":63,"stem":64,"children":65},"Модули shef.*","package","\u002Fmodules","3.modules",[66,69,131,179],{"title":61,"path":63,"stem":67,"description":68},"3.modules\u002Findex","Что за чем ставить",{"title":70,"description":6,"path":71,"stem":72,"children":73},"shef.options","\u002Fmodules\u002Foptions","3.modules\u002F1.options\u002Findex",[74,76,81,86,91,96,101,106,110,114,119,123,127],{"title":70,"path":71,"stem":72,"description":75},"фундамент: настройки, трейты, компоненты",{"title":77,"path":78,"stem":79,"description":80},"[`\\Shef\\Options\\Installator`] Installer","\u002Fmodules\u002Foptions\u002Finstaller","3.modules\u002F1.options\u002F1.installer","Для облегчения установок.",{"title":82,"path":83,"stem":84,"description":85},"Сборка, CI и релиз","\u002Fmodules\u002Foptions\u002Fbuild-and-install","3.modules\u002F1.options\u002F10.build-and-install","Раскладка репозитория — в module-structure.md, процесс —\nв CONTRIBUTING.md, установка глазами пользователя —\nв README.md.",{"title":87,"path":88,"stem":89,"description":90},"Раскладка репозитория","\u002Fmodules\u002Foptions\u002Fmodule-structure","3.modules\u002F1.options\u002F11.module-structure","Файл про устройство репозитория. Опорные точки модуля — в CLAUDE.md,\nпроцесс — в CONTRIBUTING.md, сборка — в\nbuild-and-install.md.",{"title":92,"path":93,"stem":94,"description":95},"Проверка на портале","\u002Fmodules\u002Foptions\u002Fportal-check","3.modules\u002F1.options\u002F12.portal-check","Всё, что ниже рантайма Битрикса, тестами не закрыть: установка, права, кеш,\nраскладка файлов, поведение при обновлении. Проверять это приходится руками —\nи лучше по списку, потому что забытый шаг находит не разработчик, а клиент.",{"title":97,"path":98,"stem":99,"description":100},"[`\\Shef\\Options\\Main\\Options`] Опции настроек модуля","\u002Fmodules\u002Foptions\u002Foptions","3.modules\u002F1.options\u002F2.options","Поддерживает следующие типы:",{"title":102,"path":103,"stem":104,"description":105},"Работа с пользователями","\u002Fmodules\u002Foptions\u002Fsecurity","3.modules\u002F1.options\u002F3.security","",{"title":107,"path":108,"stem":109,"description":105},"[`\\Shef\\Options\\Main\\Utils`] Утилиты","\u002Fmodules\u002Foptions\u002Futils","3.modules\u002F1.options\u002F4.utils",{"title":111,"path":112,"stem":113,"description":105},"[`\\Shef\\Options\\Components`] Работа с компонентами","\u002Fmodules\u002Foptions\u002Fcomponents","3.modules\u002F1.options\u002F5.components",{"title":115,"path":116,"stem":117,"description":118},"[`\\Shef\\Options\\Options`] Паттерны","\u002Fmodules\u002Foptions\u002Fpattern","3.modules\u002F1.options\u002F6.pattern","Запускаемые примеры: singleton.php,\nconfig.php, smartstd.php —\nкак их гонять, написано в examples\u002FREADME.md.",{"title":120,"path":121,"stem":122,"description":105},"[`\\Shef\\Options\\Tests`] Тестирование","\u002Fmodules\u002Foptions\u002Ftests","3.modules\u002F1.options\u002F7.tests",{"title":124,"path":125,"stem":126,"description":105},"[`\\Shef\\Options\\TraitList`] Набор трейтов","\u002Fmodules\u002Foptions\u002Ftraitlist","3.modules\u002F1.options\u002F8.traitlist",{"title":128,"path":129,"stem":130,"description":105},"Правила для ИИ-агентов в этом репозитории","\u002Fmodules\u002Foptions\u002Fagent-rules","3.modules\u002F1.options\u002F9.agent-rules",{"title":132,"description":6,"path":133,"stem":134,"children":135},"shef.problems","\u002Fmodules\u002Fproblems","3.modules\u002F2.problems\u002Findex",[136,138,143,147,152,157,161,166,169,172,175],{"title":132,"path":133,"stem":134,"description":137},"логи, журнал событий, учёт проблем",{"title":139,"path":140,"stem":141,"description":142},"[`\\Shef\\Problems\\Integration`] События и меню","\u002Fmodules\u002Fproblems\u002Fevents","3.modules\u002F2.problems\u002F1.events","Что модуль регистрирует в ядре при установке. Список — в .settings.php, ключ\ninstallEvents; что каждый обработчик существует, сверяет\ntests\u002Fsettings_test.php.",{"title":144,"path":145,"stem":146,"description":105},"Безопасность логов","\u002Fmodules\u002Fproblems\u002Fsecurity","3.modules\u002F2.problems\u002F10.security",{"title":148,"path":149,"stem":150,"description":151},"Быстрая отладка: `_pr`, `_log`, `_log1`","\u002Fmodules\u002Fproblems\u002Fdeffunctions","3.modules\u002F2.problems\u002F2.deffunctions","Функции объявляет def-functions.php, подключается он из include.php.",{"title":153,"path":154,"stem":155,"description":156},"Уровни логирования","\u002Fmodules\u002Fproblems\u002Floglevel","3.modules\u002F2.problems\u002F3.loglevel","Уровни — стандарт PSR-3, в Monolog это \\Monolog\\Level. Ниже — когда какой брать.",{"title":158,"path":159,"stem":160,"description":105},"[`\\Shef\\Problems\\Integration\\Monolog`] Monolog","\u002Fmodules\u002Fproblems\u002Fmonolog","3.modules\u002F2.problems\u002F4.monolog",{"title":162,"path":163,"stem":164,"description":165},"Ротация логов","\u002Fmodules\u002Fproblems\u002Flogrotate","3.modules\u002F2.problems\u002F5.logrotate","Логи модуля лежат в каталоге логов — по умолчанию на уровень выше корня сайта,\nдля BitrixVM \u002Fhome\u002Fbitrix\u002Fsh_log\u002F*.log, — и сами не чистятся. Ротацию делает\nlogrotate — системная утилита, а не Monolog: Monolog тоже умеет\n(RotatingFileHandler), но тогда за файлами следит каждый PHP-процесс, а не\nодна служба.",{"title":128,"path":167,"stem":168,"description":105},"\u002Fmodules\u002Fproblems\u002Fagent-rules","3.modules\u002F2.problems\u002F6.agent-rules",{"title":82,"path":170,"stem":171,"description":85},"\u002Fmodules\u002Fproblems\u002Fbuild-and-install","3.modules\u002F2.problems\u002F7.build-and-install",{"title":87,"path":173,"stem":174,"description":90},"\u002Fmodules\u002Fproblems\u002Fmodule-structure","3.modules\u002F2.problems\u002F8.module-structure",{"title":92,"path":176,"stem":177,"description":178},"\u002Fmodules\u002Fproblems\u002Fportal-check","3.modules\u002F2.problems\u002F9.portal-check","Всё, что ниже рантайма Битрикса, тестами не закрыть: установка, права, меню,\nраскладка файлов, журнал событий, поведение при обновлении. Проверять это\nприходится руками — и лучше по списку, потому что забытый шаг находит не\nразработчик, а клиент.",{"title":180,"description":6,"path":181,"stem":182,"children":183},"shef.insync","\u002Fmodules\u002Finsync","3.modules\u002F3.insync\u002Findex",[184,186,191,194,198,203,208,213,218,222,227,232,235],{"title":180,"path":181,"stem":182,"description":185},"агенты, импорт, API-клиенты, модели",{"title":187,"path":188,"stem":189,"description":190},"[`\\Shef\\InSync\\Agents`] Агенты","\u002Fmodules\u002Finsync\u002Fagents","3.modules\u002F3.insync\u002F1.agents","Агент импорта — наследник \\Shef\\InSync\\Agents\\AAgent. Описание агента для\nb_agent — \\Shef\\InSync\\Agents\\Entity, установку и управление берёт на себя\n\\Shef\\InSync\\Agents\\Manager.",{"title":87,"path":192,"stem":193,"description":90},"\u002Fmodules\u002Finsync\u002Fmodule-structure","3.modules\u002F3.insync\u002F10.module-structure",{"title":92,"path":195,"stem":196,"description":197},"\u002Fmodules\u002Finsync\u002Fportal-check","3.modules\u002F3.insync\u002F11.portal-check","Всё, что ниже рантайма Битрикса, тестами не закрыть: установка, права, левое\nменю, раскладка компонентов, агенты, таблица импорта, поведение при\nобновлении. Проверять это приходится руками — и лучше по списку, потому что\nзабытый шаг находит не разработчик, а клиент.",{"title":199,"path":200,"stem":201,"description":202},"Безопасность","\u002Fmodules\u002Finsync\u002Fsecurity","3.modules\u002F3.insync\u002F12.security","Модуль даёт другим модулям заготовки для синхронизаций, и самые опасные места\nу него общие с ними: кто может запускать агенты и импорт, что ложится в каталоги\nимпорта, что уходит в SQL и в лог. Ниже — что держит модуль и что остаётся\nпроекту.",{"title":204,"path":205,"stem":206,"description":207},"[`\\Shef\\InSync\\Sync`] Импорт","\u002Fmodules\u002Finsync\u002Fimport","3.modules\u002F3.insync\u002F2.import","Импорт идёт в два шага через таблицу импорта \\Shef\\InSync\\Sync\\Model\\SyncTable\n(shef_insync_model):",{"title":209,"path":210,"stem":211,"description":212},"[`\\Shef\\InSync\\Api`] API","\u002Fmodules\u002Finsync\u002Fapi","3.modules\u002F3.insync\u002F3.api","Обращение к внешнему API по HTTP — наследник \\Shef\\InSync\\Api\\AConnector.",{"title":214,"path":215,"stem":216,"description":217},"[`\\Shef\\InSync\\TraitList\\Xml`] Парсинг XML","\u002Fmodules\u002Finsync\u002Fxml","3.modules\u002F3.insync\u002F4.xml","Разбор XML сделан через SbWereWolf\u002Fxml-navigator\n(статья на Хабре): XMLReader идёт по\nдокументу потоком, а каждый элемент с нужным тегом HierarchyComposer\nпревращает в массив — n имя, v значение, a атрибуты, s вложенные\nэлементы.",{"title":219,"path":220,"stem":221,"description":105},"Компоненты","\u002Fmodules\u002Finsync\u002Fcomponents","3.modules\u002F3.insync\u002F5.components",{"title":223,"path":224,"stem":225,"description":226},"Страницы","\u002Fmodules\u002Finsync\u002Fpage","3.modules\u002F3.insync\u002F6.page","Страницы модуля — в левом меню, штатным разделом intranet\n(Bitrix\\Intranet\\CustomSection): раздел «SH Импорт», код shinsync.\nВерхней панели и shef.uiclear больше нет.",{"title":228,"path":229,"stem":230,"description":231},"[`\\Shef\\InSync\\Main\\Options`] Опции настроек модуля","\u002Fmodules\u002Finsync\u002Foptions","3.modules\u002F3.insync\u002F7.options","Опции для страницы настроек модуля импорта (на ShOptionsConfig из\nshef.options): добавьте их во вкладку своего options_conf.php.",{"title":128,"path":233,"stem":234,"description":105},"\u002Fmodules\u002Finsync\u002Fagent-rules","3.modules\u002F3.insync\u002F8.agent-rules",{"title":82,"path":236,"stem":237,"description":85},"\u002Fmodules\u002Finsync\u002Fbuild-and-install","3.modules\u002F3.insync\u002F9.build-and-install",{"id":239,"title":153,"body":240,"description":156,"extension":465,"meta":466,"navigation":467,"path":154,"rawbody":468,"seo":469,"stem":155,"__hash__":470},"docs\u002F3.modules\u002F2.problems\u002F3.loglevel.md",{"type":241,"value":242,"toc":445},"minimark",[243,252,255,336,339,349,356,359,365,368,374,377,383,386,392,395,401,404,410,413,419,422,434],[244,245,246,247,251],"p",{},"Уровни — стандарт PSR-3, в Monolog это ",[248,249,250],"code",{},"\\Monolog\\Level",". Ниже — когда какой брать.",[244,253,254],{},"В журнал событий Битрикса уровни ложатся так (журнал знает только пять\nзначений важности, остальное записал бы как UNKNOWN):",[256,257,258,271],"table",{},[259,260,261],"thead",{},[262,263,264,268],"tr",{},[265,266,267],"th",{},"Monolog",[265,269,270],{},"журнал событий",[272,273,274,287,303,315],"tbody",{},[262,275,276,282],{},[277,278,279],"td",{},[248,280,281],{},"Debug",[277,283,284],{},[248,285,286],{},"DEBUG",[262,288,289,298],{},[277,290,291,294,295],{},[248,292,293],{},"Info",", ",[248,296,297],{},"Notice",[277,299,300],{},[248,301,302],{},"INFO",[262,304,305,310],{},[277,306,307],{},[248,308,309],{},"Warning",[277,311,312],{},[248,313,314],{},"WARNING",[262,316,317,331],{},[277,318,319,294,322,294,325,294,328],{},[248,320,321],{},"Error",[248,323,324],{},"Critical",[248,326,327],{},"Alert",[248,329,330],{},"Emergency",[277,332,333],{},[248,334,335],{},"ERROR",[244,337,338],{},"Исходный уровень не теряется: он стоит в заголовке описания записи.",[244,340,341,342],{},"Источник: ",[343,344,348],"a",{"href":345,"rel":346},"https:\u002F\u002Fhabr.com\u002Fru\u002Fpost\u002F456676\u002F",[347],"nofollow","Логирование в распределенном php-приложении",[350,351,353,355],"h2",{"id":352},"debug-подробная-информация-для-отладки",[248,354,281],{}," - Подробная информация для отладки",[244,357,358],{},"События для отладки какого-либо процесса в системе. При добавлении достаточного количества данных в контекст события можно\nпроизвести диагностику проблемы, либо заключить об исправном функционировании процесса в системе.\nНапример, пользователь открыл страницу с товаром и получил список рекомендаций.\nЗначительно увеличивает количество отправляемых событий, поэтому допустимо убирать логирование таких событий через некоторое время.\nКак результат, количество таких событий в нормальном функционировании будет переменным, тогда и мониторинг для уведомления по ним можно не подключать.",[350,360,362,364],{"id":361},"info-интересные-события",[248,363,293],{}," - Интересные события",[244,366,367],{},"События, возникновение которых сообщает о нормальном функционировании системы.\nНапример, пользователь зарегистрировался, пользователь приобрел товар, пользователь оставил отзыв.\nУведомление по таким событиями нужно настраивать в обратном виде: если за период времени произошло недостаточное количество таких\nсобытий, то нужно уведомить, потому что их снижение могло быть вызвано в результате допущенной ошибки.",[350,369,371,373],{"id":370},"notice-существенные-события-но-не-ошибки",[248,372,297],{}," - Существенные события, но не ошибки",[244,375,376],{},"Это события, которые сообщают о предусмотренных системой отклонениях, которые являются частью нормального функционирования системы.\nНапример, пользователь указал неправильный пароль при входе, пользователь не заполнил отчество, но оно и не обязательно,\nпользователь купил заказ за 0 рублей, но у вас такое предусмотрено в редких случаях.\nУведомление по ним при высокой частоте тоже нужно, так как резкий рост числа отклонений может быть результатом допущенной ошибки,\nкоторую срочно нужно исправить.",[350,378,380,382],{"id":379},"warning-исключительные-случаи-но-не-ошибки",[248,381,309],{}," - Исключительные случаи, но не ошибки",[244,384,385],{},"События, для немедленного уведомления о которых нужно набрать значительное их количество за период времени.\nНе удалось выполнить действие, невыполнение которого ничего серьезного не ломает.\nЭто всё ещё ошибки, но исправление которых может ждать рабочего расписания.\nНапример, не удалось сохранить аватарку пользователя, а система — интернет-магазин.\nУведомление о них нужно (при высокой частоте), чтобы узнать о внезапных аномалиях, потому что они могут быть симптомами более серьезных проблем.",[350,387,389,391],{"id":388},"error-ошибки-исполнения-не-требующие-сиюминутного-вмешательства",[248,390,321],{}," - Ошибки исполнения, не требующие сиюминутного вмешательства",[244,393,394],{},"Произошло событие о, котором при скором повторении нужно сообщить.\nНе удалось выполнить действие, которое обязательно должно быть выполнено, но при этом такое действие не попадает под\nописание critical.\nНапример, не удалось сохранить аватарку пользователя по его запросу, но при этом система не является сервисом\nаватарок, а является чат-системой.",[350,396,398,400],{"id":397},"critical-критические-состояния-компонент-системы-недоступен-неожиданное-исключение",[248,399,324],{}," - Критические состояния (компонент системы недоступен, неожиданное исключение)",[244,402,403],{},"Событие, когда сбой даёт компонент системы, который очень важен и всегда должен работать.\nЭто уже сильно зависит от того, чем занимается система.\nПодходит для событий, о которых важно оперативно узнать, даже если оно произошло всего раз.",[350,405,407,409],{"id":406},"alert-действие-требует-безотлагательного-вмешательства",[248,408,327],{}," - Действие требует безотлагательного вмешательства",[244,411,412],{},"Система сама может продиагностировать своё состояние, например, задачей по расписанию,\nи в результате записать событие с этим уровнем.\nЭто могут быть проверки подключаемых ресурсов или что-то конкретное,\nнапример, баланс на счету используемого внешнего ресурса.",[350,414,416,418],{"id":415},"emergency-система-не-работает",[248,417,330],{}," - Система не работает",[244,420,421],{},"Это уровень для внешних систем, которые могут посмотреть на вашу систему и точно определить,\nчто она полностью не работает, либо не работает её самодиагностика",[244,423,424,427,428,427,431],{},[343,425,426],{"href":149},"← def-functions"," | ",[343,429,430],{"href":133},"↑ Содержание",[343,432,433],{"href":159},"Monolog →",[435,436,437],"note",{},[244,438,341,439,444],{},[343,440,443],{"href":441,"rel":442},"https:\u002F\u002Fgithub.com\u002Fbx-shef\u002Fproblems\u002Fblob\u002Fmain\u002Fdocs\u002F3_loglevel.md",[347],"problems\u002Fdocs\u002F3_loglevel.md"," — правки туда, сайт пересобирается сам.",{"title":105,"searchDepth":446,"depth":446,"links":447},3,[448,451,453,455,457,459,461,463],{"id":352,"depth":449,"text":450},2,"Debug - Подробная информация для отладки",{"id":361,"depth":449,"text":452},"Info - Интересные события",{"id":370,"depth":449,"text":454},"Notice - Существенные события, но не ошибки",{"id":379,"depth":449,"text":456},"Warning - Исключительные случаи, но не ошибки",{"id":388,"depth":449,"text":458},"Error - Ошибки исполнения, не требующие сиюминутного вмешательства",{"id":397,"depth":449,"text":460},"Critical - Критические состояния (компонент системы недоступен, неожиданное исключение)",{"id":406,"depth":449,"text":462},"Alert - Действие требует безотлагательного вмешательства",{"id":415,"depth":449,"text":464},"Emergency - Система не работает","md",{},true,"---\ntitle: \"Уровни логирования\"\n---\n\nУровни — стандарт PSR-3, в Monolog это `\\Monolog\\Level`. Ниже — когда какой брать.\n\nВ журнал событий Битрикса уровни ложатся так (журнал знает только пять\nзначений важности, остальное записал бы как UNKNOWN):\n\n| Monolog | журнал событий |\n|---|---|\n| `Debug` | `DEBUG` |\n| `Info`, `Notice` | `INFO` |\n| `Warning` | `WARNING` |\n| `Error`, `Critical`, `Alert`, `Emergency` | `ERROR` |\n\nИсходный уровень не теряется: он стоит в заголовке описания записи.\n\nИсточник: [Логирование в распределенном php-приложении](https:\u002F\u002Fhabr.com\u002Fru\u002Fpost\u002F456676\u002F)\n\n## `Debug` - Подробная информация для отладки\nСобытия для отладки какого-либо процесса в системе. При добавлении достаточного количества данных в контекст события можно \nпроизвести диагностику проблемы, либо заключить об исправном функционировании процесса в системе. \nНапример, пользователь открыл страницу с товаром и получил список рекомендаций. \nЗначительно увеличивает количество отправляемых событий, поэтому допустимо убирать логирование таких событий через некоторое время. \nКак результат, количество таких событий в нормальном функционировании будет переменным, тогда и мониторинг для уведомления по ним можно не подключать.\n\n## `Info` - Интересные события\nСобытия, возникновение которых сообщает о нормальном функционировании системы. \nНапример, пользователь зарегистрировался, пользователь приобрел товар, пользователь оставил отзыв. \nУведомление по таким событиями нужно настраивать в обратном виде: если за период времени произошло недостаточное количество таких \nсобытий, то нужно уведомить, потому что их снижение могло быть вызвано в результате допущенной ошибки.\n\n## `Notice` - Существенные события, но не ошибки\nЭто события, которые сообщают о предусмотренных системой отклонениях, которые являются частью нормального функционирования системы. \nНапример, пользователь указал неправильный пароль при входе, пользователь не заполнил отчество, но оно и не обязательно, \nпользователь купил заказ за 0 рублей, но у вас такое предусмотрено в редких случаях. \nУведомление по ним при высокой частоте тоже нужно, так как резкий рост числа отклонений может быть результатом допущенной ошибки, \nкоторую срочно нужно исправить.\n\n## `Warning` - Исключительные случаи, но не ошибки\nСобытия, для немедленного уведомления о которых нужно набрать значительное их количество за период времени. \nНе удалось выполнить действие, невыполнение которого ничего серьезного не ломает. \nЭто всё ещё ошибки, но исправление которых может ждать рабочего расписания. \nНапример, не удалось сохранить аватарку пользователя, а система — интернет-магазин. \nУведомление о них нужно (при высокой частоте), чтобы узнать о внезапных аномалиях, потому что они могут быть симптомами более серьезных проблем.\n\n## `Error` - Ошибки исполнения, не требующие сиюминутного вмешательства\nПроизошло событие о, котором при скором повторении нужно сообщить. \nНе удалось выполнить действие, которое обязательно должно быть выполнено, но при этом такое действие не попадает под \nописание critical. \nНапример, не удалось сохранить аватарку пользователя по его запросу, но при этом система не является сервисом \nаватарок, а является чат-системой.\n\n## `Critical` - Критические состояния (компонент системы недоступен, неожиданное исключение)\nСобытие, когда сбой даёт компонент системы, который очень важен и всегда должен работать. \nЭто уже сильно зависит от того, чем занимается система. \nПодходит для событий, о которых важно оперативно узнать, даже если оно произошло всего раз.\n\n## `Alert` - Действие требует безотлагательного вмешательства\nСистема сама может продиагностировать своё состояние, например, задачей по расписанию, \nи в результате записать событие с этим уровнем. \nЭто могут быть проверки подключаемых ресурсов или что-то конкретное, \nнапример, баланс на счету используемого внешнего ресурса.\n\n## `Emergency` - Система не работает\nЭто уровень для внешних систем, которые могут посмотреть на вашу систему и точно определить, \nчто она полностью не работает, либо не работает её самодиагностика\n\n\n[← def-functions](\u002Fmodules\u002Fproblems\u002Fdeffunctions) | [↑ Содержание](\u002Fmodules\u002Fproblems) | [Monolog →](\u002Fmodules\u002Fproblems\u002Fmonolog)\n\n::note\nИсточник: [problems\u002Fdocs\u002F3_loglevel.md](https:\u002F\u002Fgithub.com\u002Fbx-shef\u002Fproblems\u002Fblob\u002Fmain\u002Fdocs\u002F3_loglevel.md) — правки туда, сайт пересобирается сам.\n::\n\n",{"title":153,"description":156},"lV0kH1fXMd-C1w60s1_XTyVD3isn161_u_NBr_l1nDU",[472,473],{"title":148,"path":149,"stem":150,"description":151,"children":-1},{"title":158,"path":159,"stem":160,"description":105,"children":-1},1790857270319]