XLog
Lightweight and pretty, powerful and flexible logger для Android и Java, может печатать логи в Logcat, консоль и файлы или куда угодно, если вам нравится.
Зависимость:
implementation 'com.elvishew:xlog:1.10.1'
Инициализация:
XLog.init(LogLevel.ALL);
Логирование:
XLog.d("hello xlog");
Записать простое сообщение:
XLog.d(message);
Записать сообщение с throwable, обычно используется при возникновении исключения:
XLog.e(message, throwable);
Также поддерживается форматирование строки, поэтому вам не нужно добавлять так много строк и переменных с помощью +
.
XLog.d("Hello %s, I am %d", "Elvis", 20);
Неформатированные JSON и XML строки будут отформатированы автоматически.
XLog.json(JSON_CONTENT);
XLog.xml(XML_CONTENT);
Поддерживаются все коллекции и карты данных.
XLog.d(array);
XLog.d(list);
XLog.d(map);
Если необходимо, вы также можете напрямую выгрузить объекты Intent и Bundle.
XLog.d(intent);
XLog.d(bundle);
Фактически, вы можете выгружать любой тип объекта, если хотите. Вы можете указать ObjectFormatter для конкретного типа, иначе будет использоваться toString() при преобразовании объекта в строку.
XLog.d(object);
Примечание: v/d/i/w/e являются необязательными, v для VERBOSE, d для DEBUG, i для INFO, w для WARNING и e для ERROR.
xLog
очень гибкий, почти каждый компонент настраивается.
При инициализации есть простой способ:
XLog.init(LogLevel.ALL);
и продвинутый способ.
LogConfiguration config = new LogConfiguration.Builder()
.logLevel(BuildConfig.DEBUG ? LogLevel.ALL // Укажите уровень журнала, журналы ниже этого уровня не будут напечатаны, по умолчанию: LogLevel.ALL
: LogLevel.NONE)
.tag("MY_TAG") // Укажите TAG, по умолчанию: "X-LOG"
.enableThreadInfo() // Включить информацию о потоке, по умолчанию отключено
.enableStackTrace(2) // Включить трассировку стека с глубиной 2, по умолчанию отключена
.enableBorder() // Включить границу, по умолчанию отключена
.jsonFormatter(new MyJsonFormatter()) // По умолчанию: DefaultJsonFormatter
.xmlFormatter(new MyXmlFormatter()) // По умолчанию: DefaultXmlFormatter
.throwableFormatter(new MyThrowableFormatter()) // По умолчанию: DefaultThrowableFormatter
.threadFormatter(new MyThreadFormatter()) // По умолчанию: DefaultThreadFormatter
.stackTraceFormatter(new MyStackTraceFormatter()) // По умолчанию: DefaultStackTraceFormatter
.borderFormatter(new MyBoardFormatter()) // По умолчанию: DefaultBorderFormatter
.addObjectFormatter(AnyClass.class, // Добавить форматтер для определенного класса объектов
new AnyClassObjectFormatter()) // По умолчанию использовать Object.toString()
.addInterceptor(new BlacklistTagsFilterInterceptor( // Добавить фильтр тегов чёрного списка
"blacklist1", "blacklist2", "blacklist3"))
.addInterceptor(new MyInterceptor()) // Добавить другой перехватчик журнала
.build();
``` Файловая система «XLog» (XLog): инициализация и использование
**Файловая система XLog**:
* **FileLastModifiedCleanStrategy(MAX_TIME))** — стратегия очистки по времени последнего изменения файла. По умолчанию используется NeverCleanStrategy().
* **.flattener(new MyFlattener())** — функция сглаживания. По умолчанию применяется DefaultFlattener.
* **.writer(new MyWriter())** — метод записи. По умолчанию — SimpleWriter.
* **.build()** — сборка.
ФайлLastModifiedCleanStrategy(MAX_TIME) — это стратегия очистки, которая удаляет файлы на основе времени их последнего изменения. Она может быть полезна для сохранения только последних версий файлов и освобождения места на диске.
MyFlattener и MyWriter — это пользовательские классы, которые могут выполнять дополнительные функции при работе с файлами. Они позволяют настраивать поведение файловой системы XLog в соответствии с требованиями конкретного проекта.
После инициализации создаётся глобальный Logger с глобальной конфигурацией. Все операции журналирования через XLog будут проходить через этот глобальный Logger.
Кроме того, можно создать неограниченное количество Logger с различными конфигурациями:
1. На основе глобального Logger изменить тег на «TAG-A».
```java
Logger logger = XLog.tag("TAG-A")
... // другие переопределения
.build();
logger.d("Message with custom tag");
Logger logger = XLog.enableBorder()
.enableThread()
... // другие переопределения
.build();
logger.d("Message with thread info and border");
Также можно вести журнал с использованием конфигурации для однократного использования:
XLog.tag("TAG-A").d("Message with custom tag");
XLog.enableBorder().enableThread().d("Message with thread info and border");
С помощью одного оператора журналирования
XLog.d("hello xlog");
можно вывести «hello xlog» в:
Logcat (с AndroidPrinter);
Файл (с FilePrinter).
Для этого необходимо реализовать интерфейс Printer и указать его при инициализации:
XLog.init(config, printer1, printer2...printerN);
или при создании неглобального Logger:
Logger logger = XLog.printer(printer1, printer2...printerN)
.build();
или при однократном использовании журналирования:
XLog.printer(printer1, printer2...printerN).d("Message with one-time-use printers");
Чтобы сохранить журналы в файл, необходимо создать FilePrinter:
Printer filePrinter = new FilePrinter // Printer that print(save) the log to file
.Builder("<path-to-logs-dir>") // Specify the directory path of log file(s)
.fileNameGenerator(new DateFileNameGenerator()) // Default: ChangelessFileNameGenerator("log")
.backupStrategy(new NeverBackupStrategy()) // Default: FileSizeBackupStrategy(1024 * 1024)
.cleanStrategy(new FileLastModifiedCleanStrategy(MAX_TIME)) // Default: NeverCleanStrategy()
.flattener(new MyFlattener()) // Default: DefaultFlattener
.build();
и добавить FilePrinter в XLog при инициализации:
XLog.init(config, filePrinter);
или при создании неглобального Logger:
Logger logger = XLog.printer(filePrinter)
... // other overrides
.build();
или при однократном использовании журналирования:
XLog.printer(filePrinter).d("Message with one-time-use printers");
Третьи стороны также могут использовать LibCat после инициализации XLog:
LibCat.config(true, filePrinter);
Тогда журналы, зарегистрированные сторонними модулями/библиотеками (в рамках одного приложения), также будут сохранены в файле.
Пользователь может настроить имя файла напрямую или классифицировать журналы по различным правилам.
logs-dir
└──log
logs-dir
├──VERBOSE
├──DEBUG
├──INFO
├──WARN
└──ERROR
logs-dir
├──2020-01-01
├──2020-01-02
├──2020-01-03
└──2020-01-04
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )