Android: slf4 android использовать дату в качестве имени файла в журналах - PullRequest
0 голосов
/ 11 марта 2020

Я искал способ сохранить все журналы приложения в файл, и я нашел эту библиотеку slf4 android, которая способна сделать именно это, поскольку кажется, что это реализация из slf4j.

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

код, который реализует протоколирование slf4android, выглядит следующим образом:

private void setupLogger() {
    final File storageDir = this.getStorageDir();
    final String fileName = "%date.log";

    final Path filePath = Paths.get(storageDir.toString(),fileName);

    FileLogHandlerConfiguration fileHandler = LoggerConfiguration.fileLogHandler(this);

    fileHandler.setFullFilePathPattern(filePath.toString());

    LoggerConfiguration.configuration()
        .addHandlerToRootLogger(fileHandler);
}

private File getStorageDir() {
    final String storageState = Environment.getExternalStorageState();

    // Return external media if mounted
    if (storageState.equals(Environment.MEDIA_MOUNTED)) {
        return this.getExternalFilesDir(null);
    } else {
        return this.getFilesDir();
    }
}

Я даже пытался использовать %d или %d{yyyy-MM-DD}, поскольку они кажутся slf4j шаблонами, но имя файла все еще использует буквальное значение имени файла, которое я передаю в путь (имя файла либо %date.log, %d.log, либо %d{yyyy-MM-DD}.log). I thought they were the same patterns used in slf4j`, потому что пример в репозитории github также использует шаблоны.

Я искал в хранилище для кода, который отвечает за интерполяцию шаблонов, и я обнаружил, что есть шаблон для значения %date, но он по-прежнему не обрабатывается.

Причина, по которой я хочу сделать файл журнала иметь дату s Это имя файла, потому что приложение, над которым я работаю, будет работать непрерывно каждый день, поэтому при запросе я просто получаю журналы за указанную дату.

...