На
прошлом стриме про ОСень мы пытались сделать магию с внедрением логгера в желудь через кастомную аннотацию &Лог и собственный напильник.
Фокус не удался, так как уперлись в простое ограничение - объект не видит методов и свойств, которые на него накинули "сверху", через decorator. Что в принципе логично, и о чем мне стоило догадаться заранее :)
Но идея простого внедрения лога не отпускала, и совместными усилиями с
@nivanchenko родился
autumn-logos. Механизм мета-аннотаций, про который я писал
ранее, и смена концепции с аннотации над конструктором на аннотацию над переменной объекта сделали свое дело, и оно таки завёлось! А добавленная в OneScript поддержка рефлексии приватных свойств и методов только навела красоты.
Помимо собственно прилепления проинициализированного логгера от
logos в ваш желудь, autumn-logos добавляет несколько ништяков.
Во-первых, через конфигурационный файл ОСени можно изменять настройки логирования - уровень логирования, аппендеры и даже раскладку! Причём и аппендер и раскладка могут быть жёлудями, со всеми вытекающими. И не забывайте, что теперь в logos есть поддержка иерархии настроек (за которую тоже спасибо
@nivanchenko), поэтому настройки логов, сделанные для "корневого" лога приложения, будут распространятся и на все его подчинённые (через точку) логи.
Во-вторых, autumn-logos понимает, в какой класс запрашивается новый Лог, и умеет детализировать имена логов автоматически, представляя к общему префиксу лога имя класса.
И в-третьих, все это работает с механизмом мета-аннотаций, так что вы можете объявить свою собственную аннотацию, в которой укажите нужные настройки аннотации &Лог, и применять её в во всем проекте.
Кажется, winow ещё не переехало на новый механизм, но зато его работу можно оценить в
фича-бранче ovm, в рамках которого я не только постепенно перевожу логирование на autumn-logos, но и вообще все приложение на ОСень, попутно разрабатывая то, что в будущем станет библиотекой autumn-cli - адаптером чудесной библиотеки Лёши Хорева под названием
cli.
Такие вот новости к этому часу. :)
Ссылочка в подвале ещё разок:
https://github.com/autumn-library/autumn-logos