Приветствую!
Прошлый год выдался крайне продуктивным для нашей некоммерческой организации, и эта статья является лишь началом цикла публикаций, освещающих нашу деятельность. А там есть о чём рассказать, ведь несколько наших продуктов оказались в центре больших банковских проектов — и о да — они не подвели!
Но начнём с чего-то простого и более понятного — и при этом, близкого всем нам без исключения — темы логирования.
Вступление
Год назад мы представили Бобину — революционный SLF4J логгер. В течении этого времени мы:
- собирали замечания и пожелания (на
Хабре,sql.ruи вSlackканалах) - внедряли и использовали её в своих проектах (СПО и коммерческое\банковское ПО — в фин-тех гиганте Wirecard)
- анализировали опыт работы с ней и вырабатывали план доработок
- рекламировали (на
Linkedin) - поддерживали пользователей (таких, как
Walt Disney Studios) - пытались бороться с багами логирования в самом
SLF4J(безрезультатно)
Сразу скажу, что Хабр оказался наиболее эффективной площадкой для обсуждения — самые ценные отклики были именно отсюда.
Так каково же наше критическое мнение о собственном проекте в ретроспективе?
Ответ будет следующим: Бобина v2.0.0 была отлична, практически идеальна. Она на 100% выполнила ожидания на интенсивных проектах, сделав настройку и работу с логами удовольствием вместо пытки.
И самое главное — Бобина ни разу не подвела, что позволяет мне с ещё большей смелостью и чистой совестью рекомендовать её для повсеместного использования.
Это послужило нам вдохновением приблизить её ещё на один шаг к идеалу.
А возможным это сделали ваши ценнейшие отклики — большое спасибо!
Итак — встречайте — Бобина 3.0.0!
https://github.com/INFINITE-TECHNOLOGY/BOBBIN
https://bintray.com/infinite-technology/io.i-t/bobbin/_latestVersion
dependencies {
compile "org.codehaus.groovy:groovy-all:2.5.4"
compile "io.i-t:bobbin:3.0.0"
}Улучшения
Какие же основные улучшения вошли в этот релиз?
YAML конфигурация
YAML конфигурация сменила JSON.
Изначально Бобина имела конфигурационный файл в формате JSON.
Однако JSON имеет ограниченные возможности для блочного форматирования, что приводило к необходимости экранирования скриптовых выражений, например:
"\"./LOGS/PLUGINS/OUTPUT/${className}/${level}/${threadName}_${level}_${date}.log\""Согласитесь, не очень красиво? На это жаловались и пользователи — и даже предлагали решение — YAML.
При кажущейся очевидности, довольно долго занял процесс исследования этого решения и поиска возможных альтернатив (например, DSL конфигурация). Всё же, остановились на YAML — но только дойдя до "глубин" — изучив Snake YAML парсер, поняв философию использования, найдя баги и ограничения.
Результат порадовал! YAML поддерживает блочное форматирование и чистый синтаксис, отлично подошедший под конфигурацию Бобины. Только посмотрите на новую YAML конфигурацию:
destinations:
- name: io.infinite.bobbin.config.ConsoleDestinationConfig
levels: [warn, error, info]
- name: io.infinite.bobbin.config.FileDestinationConfig
packages: [io.infinite]
fileName: ("./LOGS/INFINITE/${className}/${level}/${className}_${level}_${date}.log")
- name: io.infinite.bobbin.config.FileDestinationConfig
fileName: ("./LOGS/PACKAGES/${className}/${level}/${className}_${level}_${date}.log")
format: dateTime + '|' + level + '|' + threadName + '|' + className + '|' + message + '\n'Это ли не лучшая существующая конфигурация логгера? Сравните с кашей в Logback, Log4j2.
JSON конфигурация больше не поддерживается в 3.0.0. Документация и Wiki также актуализированы.
Прочие улучшения конфигурации
- Отдельное указание пакетов с помощью массива
packages - Фильтр в виде скриптового выражения
filter - Улучшенная конфигурация по-умолчанию — теперь для большинства случаев даже не требуется ничего настраивать: ошибки пишутся в файл.
Технические улучшения
- Дальнейшее упрощение кода — теперь
Бобинаумещается всего в 13 классов. - Повышена производительность.
Бобинаи так была очень быстра, быстрее других логгеров — теперь же она вообще напрочь рвёт тот жеlogback. Ради эксперимента мы включили вSpring Bootприложении логирование вообще ВСЕХ классов и уровней логирования — сБобинойне было ощутимой разницы в работе приложения. Сlogbackприложение стартовало около 5 минут в такой конфигурации. - Улучшено качество кода. Убран "странноватый" код, сделана более красиво многопоточная синхронизация.
Заключение
На данный момент, вся наша экосистема переведена на Бобину 3.0.0. Мы с нетерпением ждём и постепенного перехода внеших проектов — этому способствует наша уверенность что Бобина будет приносить удовольствие пользователям в работе с ней, и особенно — с последним обновлением, ставшим ещё удобнее.
А тем временем, у нас колоссальные планы на 2020 год:
- больше проектов
- больше продуктов
- больше сервисов
HTTP клиент, чат-боты, мета-программирование, транспиляторы, мейнфреймы, крупнейшие финансовые проекты, SECaaS… Скоро на Хабре.
Stay tuned!
