{"id":42380899,"url":"https://github.com/autumn-library/autumn-logos","last_synced_at":"2026-03-12T22:09:53.405Z","repository":{"id":91619057,"uuid":"586388062","full_name":"autumn-library/autumn-logos","owner":"autumn-library","description":"Компонент ОСени, для внедрения логгера.","archived":false,"fork":false,"pushed_at":"2026-01-27T19:45:26.000Z","size":85,"stargazers_count":6,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-01-28T06:53:17.204Z","etag":null,"topics":["autumn","hacktoberfest","oscript"],"latest_commit_sha":null,"homepage":"https://autumn-library.github.io/autumn-logos","language":"1C Enterprise","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/autumn-library.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-08T00:11:29.000Z","updated_at":"2026-01-27T19:44:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"b0de4b46-1bbd-40ed-b691-c77b1ef7a2e9","html_url":"https://github.com/autumn-library/autumn-logos","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/autumn-library/autumn-logos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autumn-library%2Fautumn-logos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autumn-library%2Fautumn-logos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autumn-library%2Fautumn-logos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autumn-library%2Fautumn-logos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/autumn-library","download_url":"https://codeload.github.com/autumn-library/autumn-logos/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autumn-library%2Fautumn-logos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30446431,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T21:31:01.033Z","status":"ssl_error","status_checked_at":"2026-03-12T21:30:43.161Z","response_time":114,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autumn","hacktoberfest","oscript"],"created_at":"2026-01-27T21:31:02.594Z","updated_at":"2026-03-12T22:09:53.391Z","avatar_url":"https://github.com/autumn-library.png","language":"1C Enterprise","funding_links":[],"categories":[],"sub_categories":[],"readme":"# autumn-logos - Компонент ОСени, для внедрения логгера. \n\n[![Used by](https://litrosbadges.ru/package/autumn-logos.svg)](https://litrosbadges.ru/package/autumn-logos)\n\nКомпонент [ОСени](https://github.com/nixel2007/autumn), для внедрения [логгера](https://github.com/oscript-library/logos). Удобная аннотация - обертка для получения объекта логгера.\n\n## Подключение\n\n```bsl\n#Использовать autumn\n#Использовать autumn-logos\n\n// теперь вам доступны логгеры\n```\n\n## Использование. \n\nДопустим у вас есть ```Желудь```. В его поле вы можете внедрить класс ```Лог``` из библиотеки [logos](https://github.com/oscript-library/logos). Внедрение осуществляется по всем правилам ```Пластелина```\n\nДля внедрения используется аннотация ```\u0026Лог(\"Префикс.библиотеки\")```. Аннотация имеет один параметр, содержащий префикс. Допускается также использование аннотации без параметра.\n\nРезультатом внедрения будет объект типа ```Лог```. Общая логика такая: \n\n```Лог = Логирование.ПолучитьЛог(ПереданныйПрефикс + \".\" + ИмяКлассаВКоторыйВнедряетсяЛог)```\n\nУ аннотации ```Лог``` есть второй параметр, который отключает добавление имени класса в конце. И аннотация имеет вид ```\u0026Лог(Значение = \"Префикс.библиотеки\", УчитыватьИмяКласса = Ложь)```.\n\n```bsl\n\u0026Лог(Значение = \"my.logger.DEBUG\", УчитыватьИмяКласса = Ложь)\nПерем ЛогБезИмениКлассаСДебагом;\n```\n\n## Пример:\n\n```Файл: МойКласс.os```\n\n```bsl\n\u0026Лог(Значение = \"Префикс.Лог.БезИмениКласса\", УчитыватьИмяКласса = Ложь)\nПерем ЛогБезИмениКласса;\n\n\u0026Лог(\"Префикс.Лог.ВЭкспортромПоле\")\nПерем ЭкспортныйЛог Экспорт;\n\n\u0026Лог // лог без префикса\nПерем ЛогБезПрефикса Экспорт;\n\nПерем _ПриватныйЛог;\nПерем ЛогСеттером;\n\n\u0026Желудь\nПроцедура ПриСозданииОбъекта(\n\t\u0026Лог(\"Префикс.Лог.ВКонструкторе\") ЛогВКонструкторе\n\t)\n\t_ПриватныйЛог = ЛогВКонструкторе;\nКонецПроцедуры\n\nФункция ПриватныйЛог() Экспорт\n\tВозврат _ПриватныйЛог;\nКонецФункции\n\n\u0026Лог(\"Префикс.Лог.ВСеттере\")\nПроцедура УстановитьЛогСеттером(Значение) Экспорт\n\tЛогСеттером = Значение;\nКонецПроцедуры\n\nФункция ПолучитьЛогСеттером() Экспорт\n\tВозврат ЛогСеттером;\nКонецФункции\n```\n\n## Конфигурирование\n\nНастройка логов осуществляется через файл ```autumn-properties.json``` или ```autumn-properties.yaml```. Структура настроек очень близка к оригинальной библиотеке [logos](https://github.com/oscript-library/logos).\n\n```json\n{\n    \"logos\": {\n      \"logger\": { // Описание уровней логов, и ссылки на применяемые аппендеры.\n        \"rootLogger\": {\"level\":\"WARN\"},\n        \"my.logger.DEBUG\": \"DEBUG\", // Уровень можно задать как строкой, так и объектом с ключем level\n        \"my.logger.INFO\": \"INFO\",\n        \"my.logger.WARN\": {\"level\":\"WARN\"},\n        \"my.logger.stringlayout\": {\"level\":\"INFO\", \"stringlayout\":\"%ДатаВремя%:%Уровень% - %Сообщение%\"},\n        \"my.logger.classlayout\": {\"level\":\"INFO\", \"classlayout\":\"МойКлассРаскладки\"},\n        \"my.logger.standartlayout\": {\"level\":\"INFO\", \"classlayout\":\"ОсновнаяРаскладкаСообщения\"},\n        \"my.logger.jsonlayout\": {\"level\":\"INFO\", \"classlayout\":\"JSONРаскладкаСообщения\"},\n        \"my.logger.ERROR\": {\"level\":\"ERROR\"},\n        \"my.logger.CRITICALERROR\": {\"level\":\"CRITICALERROR\"},\n        \"my.logger.DISABLE\": {\"level\":\"DISABLE\"},\n        \"my.logger.DEFAULT\": {\"level\":\"DEFAULT\"},\n        \"my.logger.fileappender\": {\"level\":\"DEBUG\", \"appenders\": [\"debugfile\", \"consoledebug\"]}, // Аппендеры можно задать массиом\n        \"my.logger.consoleappender\": {\"level\":\"INFO\", \"appenders\": \"debugfile, consoledebug\"}    // Или строкой через \",\"\n     },\n     \"appender\": { // Настройки аппендеров\n         \"debugfile\": {\n             \"type\": \"ВыводЛогаВФайл\",\n             \"level\": \"DEBUG\",\n             \"file\": \"tests/log/fileappender.log\"\n         },\n         \"consoledebug\": {\n            \"type\": \"ВыводЛогаВКонсоль\",\n            \"level\": \"DEBUG\"\n        }\n     }\n    } \n  }\n```\n\n### Наследование настроек аппендеров\n\nНастройки кастомных аппендеров наследуются вложенными логгерами по иерархии имён через точку. Например, если настроен логгер `my.logger.smartappender` с кастомным аппендером, то логгер `my.logger.smartappender.child` автоматически унаследует эти настройки аппендера.\n\n```json\n{\n    \"logos\": {\n      \"logger\": {\n        \"my.logger.smartappender\": {\"level\":\"INFO\", \"appenders\": \"myAppender\"}\n      },\n      \"appender\": {\n        \"myAppender\": {\n          \"type\": \"МойАппендер\",\n          \"level\": \"DEBUG\"\n        }\n      }\n    }\n}\n```\n\n```bsl\n// Логгер \"my.logger.smartappender.child\" унаследует аппендер \"myAppender\"\n\u0026Лог(\"my.logger.smartappender.child\")\nПерем Лог;\n```\n\nМожно задать раскладку одним из двух способов. Ключем ```stringlayout``` где можно задать строку для раскладки по APIv1. Допустимые переменные ```%ДатаВремя%```, ```%Уровень%```, ```%Сообщение%\"```. Или указать имя класса, который является желудем в контексте Поделки, и отвечает требованиям APIv2. Пример:\n\n```bsl\n\u0026Желудь\n\u0026Прозвище(\"РаскладкаЛогоса\")\nПроцедура ПриСозданииОбъекта()\n\t\nКонецПроцедуры\n\nФункция ПолучитьФорматированноеСообщение(Знач СобытиеЛога) Экспорт\n   \n\tФорматированноеСообщение = СобытиеЛога.ПолучитьСообщение();\n \n\tВозврат ФорматированноеСообщение;\n \nКонецФункции\n```\n\n## Применение для конфигурирования.\n\nТак же можно применять библиотеку для конфигурирования логов, но без внедрения непосредственно через пластилин. \n\n```bsl\n#Использовать autumn\n#Использовать autumn-logos\n\n// Инициализация контекста осени. В этот момент будут произведены настройки логов из файла autumn-properties.json или autumn-properties.yaml\nПоделка = Новый Поделка(); \n\n// Получение настроенного лога.\nЛогОтладка = Логирование.ПолучитьЛог(\"my.logger.DEBUG\"); \n```\n\n## Трюк с мета-аннотациями.\n\nДопустим, я не хочу в каждой аннотации писать имя лога. Тем более, если он одинаковый. Тогда можно сделать аннотацию, которая будет это делать за вас. Вот пример такой аннотации.\n\n```bsl\n\u0026Аннотация(\"ЛогМоейЛибы\")\n\u0026Лог(\"oscript.lib.myliba\")\nПроцедура ПриСозданииОбъекта()\nКонецПроцедуры\n```\n\nИ теперь в любом классе можно инжектить уже своей аннотацией.\n\n```bsl\n\u0026ЛогМоейЛибы\nПерем ЛогЧерезАннотацию;\n\n\u0026Желудь\nПроцедура ПриСозданииОбъекта()\nКонецПроцедуры\n\nПроцедура ПолезнаяНагрузка()\n  ЛогЧерезАннотацию.Информация(\"Совершили полезное действие\");\nКонецПроцедуры\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautumn-library%2Fautumn-logos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fautumn-library%2Fautumn-logos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautumn-library%2Fautumn-logos/lists"}