Я искал способ сохранить все журналы приложения в файл, и я нашел эту библиотеку 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 Это имя файла, потому что приложение, над которым я работаю, будет работать непрерывно каждый день, поэтому при запросе я просто получаю журналы за указанную дату.