Я пытаюсь записывать журналы в пользовательский файл Log.txt в файле Android, используя этот код Mine, но затем этот метод создает файл, но ничего не содержит. В основном я хочу прочитать предыдущее содержимое файла, а затем добавить свои данные к существующему содержимому.
Кодекс выглядит следующим образом:
public static void write(String str)
{
InputStream fileInputStream = null;
FileOutputStream fileOutpurStream = null;
try
{
fileInputStream = new FileInputStream(file);
fileOutpurStream = new FileOutputStream(file);
if(file.exists())
{
int ch = 0;
int current = 0;
StringBuffer buffer = new StringBuffer();
while((ch = fileInputStream.read()) != -1)
{
buffer.append((char) ch);
current++;
}
byte data[]=new byte[(int)file.length()];
fileInputStream.read(data);
fileOutpurStream.write(data);
fileOutpurStream.write(str.getBytes(),0,str.getBytes().length);
fileOutpurStream.flush();
}
else
{
file.createNewFile();
fileOutpurStream.write(str.getBytes(),0,str.getBytes().length);
fileOutpurStream.flush();
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try
{
fileInputStream.close();
fileOutpurStream.flush();
fileOutpurStream.close();
fileOutpurStream = null;
fileInputStream = null;
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
buf.close()
он находился внутриfinally
блока.<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
это, конечно, то, что имел в виду @ virusss8.Для тех, кто плохо знаком с ведением журнала Java в целом и ведением журнала Android
Ниже приведены некоторые варианты входа в txt в Android.
logcat -f
как в этом ответе, чтобы войти в файл. Обратите внимание, что с Android 4.2 разрешение READ_LOGS не оказывает никакого влияния, и каждое приложение (если телефон не рутирован) может читать только свои собственные журналы. Недостатком здесь является то, что буфер logcat является кольцевым и имеет ограничение по размеру. Вы можете не получить более ранние журналы.Используйте Log4j с android-logging-log4j . Что делает android-logging-log4j? Это упрощает использование Log4j в Android, предоставляя две функции.
Простой пример ниже. Обратите внимание, что
logger
объект в приведенном ниже примере является возвращенным объектом Log4j, а не классом android-logging-log4j. Таким образом, android-logging-log4j используется только для настройки Log4j.Шаги по использованию Log4j в Android.
Добавьте log4j-1.2.x.jar и android-logging-log4j-1.0.3.jar в папку libs.
Добавляйте разрешения только при использовании внешнего хранилища
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Написать
Log4j
вспомогательный классВ классе активности
Пример источника . Обратите внимание, что log4j 2.x (улучшенная функциональность), переписанный с нуля, не поддерживает обратную совместимость с log4j 1.x. Итак, вам нужно использовать jar-файл log4j 1.2.x с jar-файлом android-logging-log4j. Мне удалось войти во внутренний файл приложения, а затем отправить файл по электронной почте
setReadable(true, false)
источник
microlog4android у меня работает, но документация оставляет желать лучшего. Все, что им нужно добавить, - это краткое руководство .
Вот краткое руководство, которое я нашел.
Добавьте следующую статическую переменную в свое основное действие:
Добавьте в свой
onCreate()
метод следующее:Создайте файл с именем
microlog.properties
и сохраните его вassets
каталогеОтредактируйте
microlog.properties
файл следующим образом:Добавьте такие операторы регистрации:
Для каждого класса вы создаете объект регистратора, как указано в 1)
6. Вы можете добавить следующее разрешение:
Вот источник учебника
источник
Предупреждение: возможно, я вас неправильно понимаю, но если вам нужен только файл журнала, зачем беспокоиться?
Поместите это в файл bat (измените путь к каталогу инструментов, и yourappname, конечно же, будет именем вашего приложения):
Затем в вашем коде просто сделайте что-то подобное:
Чтобы создать журнал, подключите USB-кабель и запустите файл bat.
С уважением
источник
Используйте slf4android lib.
Это простая реализация slf4j api с использованием android java.util.logging. *.
Особенности:
LoggerConfiguration.configuration().addHandlerToLogger
slf4android поддерживается в основном @miensol .
Подробнее о slf4android читайте в нашем блоге:
источник
Вам следует взглянуть на microlog4android. У них есть готовое решение для входа в файл.
http://code.google.com/p/microlog4android/
источник
Это может быть поздно, но надеюсь, что это поможет ... Попробуйте ...
здесь
bfwritter.newline
записывает ваш текст в файл. И добавляем разрешениев вашем файле манифеста в обязательном порядке.
источник
Я решил эту проблему с помощью следующего фрагмента кода в командной строке:
Параметр «время» добавляет сведения о поле метаданных для даты, времени вызова, приоритета / тега и PID процесса, отправившего сообщение.
Затем в своем коде просто сделайте что-то подобное (используя android.util.Log):
источник
adb
подключении, но не работает, когда устройство находится в автономном режиме. Я бы не стал использовать его в производстве, но это простое решение в режиме отладки.В общем, перед открытием потока у вас должен быть дескриптор файла. У вас есть дескриптор fileOutputStream перед createNewFile () в блоке else. Поток не создает файл, если он не существует.
Не совсем для Android, но для этой цели требуется много ввода-вывода. Что, если вы выполните много операций "записи" одну за другой? Вы будете читать все содержимое и записывать все содержимое, отнимая время и, что более важно, время автономной работы.
Я предлагаю использовать java.io.RandomAccessFile, seek () до конца, а затем writeChars () для добавления. Это будет намного более чистый код и, вероятно, намного быстрее.
источник
Я создал простой и легкий класс (около 260 LoC), который расширяет стандартную реализацию android.util.Log за счет ведения журнала на основе файлов:
журнала на каждое сообщение журнала регистрируется через android.util.Log, а также записывается в текстовый файл на устройстве.
Вы можете найти его на github:
https://github.com/volkerv/FileLog
источник
После долгих исследований я обнаружил, что:
android.util.Log
по умолчанию использоватьjava.util.logging.Logger
logger
с именем""
, чтобы получить его экземпляр, используйтеLogManager.getLogManager().getLogger("")
logger
экземплярcom.android.internal.logging.AndroidHandler
после запуска отладочных приложенийcom.android.internal.logging.AndroidHandler
выводит сообщения в logcat только с уровнями выше,java.util.logging.Level.INFO
например (Level.INFO, Level.WARNING, Level.SEVERE, Level.OFF
)Итак, чтобы писать журналы в файл, просто
rootLogger
""
добавьтеjava.util.logging.FileHandler
:Чтобы распечатать все регистраторы в вашем приложении, используйте:
источник
Этот вариант намного короче
источник
Вы можете использовать написанную мной библиотеку. Использовать очень просто:
Добавьте эту зависимость в свой файл gradle:
Инициализируем библиотеку в классе Application:
Вот как вы используете библиотеку:
А вот как получить логи:
Вот ссылка на страницу github с дополнительной информацией: https://github.com/danylovolokh/AndroidLogger
Надеюсь, поможет.
источник
Многие из предыдущих версий log4j сейчас не работают (05/2019). Но вы можете использовать Hyperlog - я могу подтвердить, что он работает.
Добавьте эту строку в свой проект зависимостей и синхронизации
Создайте новый класс приложения (создайте новый класс java и расширите Application). Затем в методе onCreate добавьте следующие строки:
Измените файл манифеста, чтобы определить файл приложения.
Различные способы входа:
Найдите файлы журнала. Перейдите к
источник