Кроссплатформенная библиотека ведения журналов Java/Kotlin

Мета-примечание: я не могу добавить тег Kotlin, так как у меня меньше 300 представителей на этом сайте, а его еще нет.


Я работаю над кроссплатформенным проектом, написанным на Java и Kotlin, и мне нужно приличное ведение журнала. System.outпо моему мнению, это не лучший способ вести журнал, поэтому я ищу кроссплатформенную библиотеку ведения журнала.

В частности, он должен работать на настольных компьютерах и Android.

Сама структура проекта выглядит так:

  • Проект
    • Core — общий код для Android и рабочего стола
    • Android ( implementation project(":core")), специфичные для платформы компоненты Android (передаются в ядро)
    • Рабочий стол ( implementation project(":core")), компоненты рабочего стола для конкретной платформы (передаются в ядро)

Это означает, что библиотека должна работать как на Android, так и на настольных компьютерах, поскольку большая часть базы кода является общей (вызовы, специфичные для платформы, по очевидным причинам привели бы к ее сбою, поэтому у нее должен быть определенный порт для каждой из платформ. , но по-прежнему поддерживает централизованную реализацию или универсальную работу с обеими платформами).

Библиотека не обязательно должна быть написана на Java или Kotlin, но она должна быть написана на языке JVM (Java, Kotlin, Scala, Groovy и т. д.).

Ответы (1)

slf4j

Я использую стандартную библиотеку журналов Java slf4j.

  • 'org.slf4j:slf4j-api:1.7.7@jar' API ведения журнала, включенный во весь код
  • 'eu.lp0.slf4j:slf4j-android:1.7.7-1@jar' включить в приложение для Android: конкретная реализация slf4j для Android
  • 'org.slf4j:slf4j-simple:1.7.7' включить в приложение, отличное от Android: реализация j2se slf4j
  • вашему приложению для Android также нужен файл "...\app\src\main\resources\eu\lp0\slf4j\android\config.properties", который настраивает, какие регистраторы активны
Я использовал 1.7.25для версии, хотя ( 1.7.25-1для Android). Вероятно, стоит упомянуть, что порт Android изменил пакет на uk.uuid.slf4j. Провел некоторое исследование slf4j, пытаясь выяснить свойства, и наткнулся на logback (который работает как «порт» регистратора на рабочем столе), поэтому я использую его вместо slf4j-simple. Тем не менее, все еще используя slf4j, журналы, похоже, работают на Android и на рабочем столе без особых проблем. Спасибо!
@Zoe Logback написан тем же автором, что и slf4j. Библиотека slf4j предназначена для использования в качестве фасада перед структурой ведения журналов. Logback предназначен для прямой реализации API slf4j. Таким образом, Logback, как правило, является лучшим выбором для проекта с нуля. Используя вызовы slf4j во всем приложении, вы даете себе свободу переключиться на другой фреймворк, если Logback когда-либо прекратит разработку или больше не будет соответствовать вашим потребностям. Другие фреймворки ведения журналов можно настроить для работы с slf4j с помощью адаптера. Реализация slf4j-simple предназначена только для того, чтобы вы начали, для обучения/демонстрации.