В библиотеке https://github.com/kochedykov/jlibmodbus/blob/master/src/com/invertor/modbus/Modbus.java
Используется логирование посредством java.util.logging.Logger
final static private Logger log = Logger.getLogger(Modbus.class.getName());
Я хочу приспособить эту библиотеку к своему Android-приложению. Как правильно реализовать связь между Logger и android.util.Log? Вообще надо использовать Log от Android в данном случае?
В своем мультиплатформенной аппе, я это реализовал так:
1) Сначала пишем свой логгер, типа:
public class MyLogger {
static MyLoggable myLoggable;
public static void attachLogger(MyLoggable myLoggableInstance) {
myLoggable=myLoggableInstance;
}
public static void info(String tag, String message, Throwable exception) {
myLoggable.info(tag, message, exception);
}
public static void info(String tag, String message) {
myLoggable.info(tag, message);
}
//blah-blah
}
Далее декларируем интерфейс, который можно будет прицепить к этому логгеру:
public interface MyLoggable {
public void info(String tag, String message, Throwable exception);
public void info(String tag, String message);
public void warning(String tag, String message, Throwable exception);
public void warning(String tag, String message);
public void error(String tag, String message, Throwable exception);
public void error(String tag, String message);
public void verbose(String tag, String message, Throwable exception);
public void verbose(String tag, String message);
public void debug(String tag, String message, Throwable exception);
public void debug(String tag, String message);
}
Теперь пишем класс, который является оберткой на стандартным Java логгером:
public class JavaUtilLogger implements MyLoggable {
static final char TAB='\t';
private java.util.Logger rootLogger;
public JavaUtilLogger(String category) {
rootLogger = LogManager.getLogManager().getLogger(category);
}
@Override
public void info(String tag, String message, Throwable exception) {
rootLogger.log(Level.INFO, tag+TAB+message, exception);
}
//blah-blah
}
В случае Android обертка будет такой:
public class AndroidLogger implements MyLoggable {
@Override
public void info(String tag, String message, Throwable exception) {
Log.i(tag, message, exception);
}
//blah-blah
}
Остается только "прицепить" нужный логгер в зависимости от ситуации:
MyLogger.attachLogger(new AndroidLogger()); //для платформы Android
MyLogger.attachLogger(new JavaUtilLogger(Modbus.class.getName())); //для plain Java
теперь все вызовы где встречается java.util.Logger меняем на свой MyLogger и все.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники