1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-XLog_old1

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

XLog

简体中文

Lightweight and pretty, powerful and flexible logger для Android и Java, может печатать логи в Logcat, консоль и файлы или куда угодно, если вам нравится.

Вывод в 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");
  1. На основе глобального Logger включить границу и информацию о потоке.
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);

Тогда журналы, зарегистрированные сторонними модулями/библиотеками (в рамках одного приложения), также будут сохранены в файле.

Пользователь может настроить имя файла напрямую или классифицировать журналы по различным правилам.

  • Используйте ChangelessFileNameGenerator, чтобы задать неизменное имя файла.
logs-dir
└──log
  • Используйте LevelFileNameGenerator, он автоматически классифицирует журналы по уровням.
logs-dir
├──VERBOSE
├──DEBUG
├──INFO
├──WARN
└──ERROR
  • Используйте DateFileNameGenerator, он будет автоматически классифицировать журналы по дате.
logs-dir
├──2020-01-01
├──2020-01-02
├──2020-01-03
└──2020-01-04

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-XLog_old1.git
git@api.gitlife.ru:oschina-mirror/mirrors-XLog_old1.git
oschina-mirror
mirrors-XLog_old1
mirrors-XLog_old1
master