В библиотеке 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
и все.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Я написал отдельный класс потока, в котором двигаю строку по канвасуИ проблема в том, что если я делаю
Либа commons fileuploadЕсть код для загрузки файлов:
Как сделать, чтобы при запуске приложения оно запускалось сразу в landscape моде, игнорируя текущую ориентацию телефона?
Рихтер в свой книге пишет, что если инициализировать поля inline, то в каждом конструкторе генерируется одинаковый IL-код инициализации этих...