Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/16: Рейтинг темы: голосов - 16, средняя оценка - 5.00
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,082

Logcat на устройстве

21.06.2014, 23:57. Показов 3332. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Тестирую приложение, парсит сайт. На эмуляторе все проходит хорошо, а на телефоне иногда крашится в момент соединения к сайту.
Как логировать ошибки, чтоб сохранялись в файл для последующего просмотра? Возможно ли это?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.06.2014, 23:57
Ответы с готовыми решениями:

LogCat
Здравствуйте. Подскажите как правильно читать лог/LogCat и определять где находится ошибка ? Вот у меня возникла ошибка , как...

logcat
Уважаемые пользователи, подскажите как просмотреть логи в приложении, если даже эмулятор не запускается из-за недостатка оперативной памяти.

Альтернатива LogCat
Работаю в студии, до этого был эклипс... LogCat использую по полной, но он меня не устраивает (ни в Студии, ни в Эклипсе, ни в...

13
Командир зеленых роботов
 Аватар для angryrobot
349 / 286 / 54
Регистрация: 08.10.2013
Сообщений: 576
22.06.2014, 10:23
Цитата Сообщение от Rube Посмотреть сообщение
Как логировать ошибки, чтоб сохранялись в файл для последующего просмотра? Возможно ли это?
Нормальный вариант - сделать отдельное приложение для этого дела. Например так как написано тут. Нужно только немного переделать чтоб лог в файл писался. Можно еще посмотреть в сторону библиотеки acra, сам не юзал но говорят хорошая вещь.
1
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
22.06.2014, 12:43
Лично я убедился что LogCat'у доверять на 100% нельзя! только на этапе отладки.
Пишите свой логер! Это не тяжело... просто вместо Log.i будете писать свою команду, например Logf.i()
А внутри пишите на флешку в файл.
Оригинальный логкэт иногда перестает записывать. Зависает. Передает одну строку дважды с одним битым вариантом (пол строки, а пото полная). Плохо фильтрует. Нельзя несколько фильтров поставить. При достижении миллиона строк (без фильтра) может тупо остановиться...
0
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,082
22.06.2014, 12:55  [ТС]
Цитата Сообщение от angryrobot Посмотреть сообщение
Нормальный вариант - сделать отдельное приложение для этого дела.
Это по типу программы CatLog? Тогда нет смысла изобретать веосипед. Да и не подходит мне, нужно чтобы пользователи смогли отправлять лог на почту автора программы.
Tester64, а есть примеры как это сделать?
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
22.06.2014, 13:12
Цитата Сообщение от Rube Посмотреть сообщение
а есть примеры как это сделать?
Примеры чего? Запись строки в файл? Это вроде так:
Java
1
2
3
4
5
6
7
8
9
10
        BufferedWriter out;
        try {
            out = new BufferedWriter(new FileWriter(fileName, true));
            out.newLine();
            out.write(mess);
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
А как завернуть это в класс Logf и сделать статической думаю сами разберетесь...

Цитата Сообщение от Rube Посмотреть сообщение
сделать отдельное приложение для этого дела
Это перебор! В крайнем случае сервис скрытой отправки... Но это уже тяжело и вредно для репутации.
Проще сделать кнопку глубоко в настройках или меню - "отправить ошибки автору"
1
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,082
22.06.2014, 13:58  [ТС]
Tester64, нет, я про то, как отловить крах приложения.
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
22.06.2014, 14:05
Цитата Сообщение от Rube Посмотреть сообщение
я про то, как отловить крах приложения
А вот это намного сложнее... я сам до конца не разобрался! Нашел какойто огромный класс, который предлагал отправить на почту и сильно модифицировал его под себя. Оригинал не остался, а в моих художествах не разберетесь - сильная привязка под мои классы.. Но точно можно и точно есть в инете!
Подскажу лишь что для перехвата в КАЖДОЕ активити в онкрейт пришлось добавить строчку:
Java
1
Thread.setDefaultUncaughtExceptionHandler(new МОЙ_КЛАСС_ОТЛОВА(this, "activity №1"));
1
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,082
22.06.2014, 17:59  [ТС]
Tester64, ну будем искать... и на том спасибо.

Добавлено через 2 часа 12 минут
Вот, вроде работает как надо:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Thread.UncaughtExceptionHandler defaultExceptionHandler; // объявление экземпляра класса
 
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); 
    defaultExceptionHandler = 
        Thread.getDefaultUncaughtExceptionHandler(); // сохранение обработчика исключений в переменную
    Thread.setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler);
}
 
Thread.UncaughtExceptionHandler uncaughtExceptionHandler = 
    new Thread.UncaughtExceptionHandler() {
    @Override
    public void uncaughtException(Thread t, Throwable e) {
        e.printStackTrace();        
        final Writer result = new StringWriter();
        final PrintWriter printWriter = new PrintWriter(result);
        e.printStackTrace(printWriter);
        String stacktrace = result.toString(); // сохранение ошибки в переменную
        printWriter.close();
        // запись ошибки в файл
        try {
            FileOutputStream fos = openFileOutput("er.txt", MODE_PRIVATE);
            fos.write(stacktrace.getBytes());
            fos.close();            
        } catch (Throwable m) {     
            Toast.makeText(getApplicationContext(),
                    "Exception: " + m.toString(), Toast.LENGTH_LONG).show();
        }   
        // вызов метода uncaughtException() объекта defaultExceptionHandler
        defaultExceptionHandler.uncaughtException(t, e);
    }
};
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
22.06.2014, 23:16
Цитата Сообщение от Rube Посмотреть сообщение
вроде работает как надо
Похоже... У меня немного сложнее для понимания было. Там и отправка на почту, и смс, и в файл и диалог-предупреждение с кнопкой "ok"... убрал лишнее, добавил свое... и забыл!

Судя по коду можно не вызывать старый обработчик? Вы пробовали что получается? Может можно глобально игнорировать ошибки в активити? было бы круто! Нажал кнопку - код дошел до ошибки и тихо прервался. Записал сообщение в файл и дал работать юзеру дальше. А у меня пока глобальное вылетание по любому происходит. Причем иногда только верхнего активити - нижнее глючит после этого...
0
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,082
23.06.2014, 07:30  [ТС]
Цитата Сообщение от Tester64 Посмотреть сообщение
Судя по коду можно не вызывать старый обработчик? Вы пробовали что получается?
Насчет старого обработчика не понял, я только учусь. А получается - ошибки пишутся в файл в папку files приложения. Ну а программа вылетает.
0
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,082
23.06.2014, 07:41  [ТС]
А как отправить на почту файл?
не тот файл прикрепил...
Вложения
Тип файла: zip 1.zip (23.2 Кб, 7 просмотров)
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
23.06.2014, 11:40
Цитата Сообщение от Rube Посмотреть сообщение
Ну а программа вылетает
У меня тоже... каждую ошибку приходится вручную "оборачивать" в try {}. А хотелось бы глобальный обработчик повесить...

Цитата Сообщение от Rube Посмотреть сообщение
1.zip
Что это? Зашифрованый архив???

Цитата Сообщение от Rube Посмотреть сообщение
А как отправить на почту файл?
Я этим не пользуюсь. Но когда-то проверил... там не прямая отправка, а встраивание в письмо в стандартном почтовике и предложение вручную его отправить... могу поискать код...
0
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,082
23.06.2014, 12:17  [ТС]
Цитата Сообщение от Tester64 Посмотреть сообщение
Что это? Зашифрованый архив???
Да по ошибке не то прикрепил, а удалить не могу, не обращайте внимания.
По теме, самое главное сделали, нашли как лог сохранять, а остальное прикрутится.
0
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
24.06.2014, 15:41
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
try{ refreshFoldersList();
} catch (Throwable t) { 
String str = "";
          t.printStackTrace();
          
          StackTraceElement[] el = t.getStackTrace();
          str+=t.getMessage()+"\r\n"; 
                   str+=t.getLocalizedMessage()+"\r\n";
          str+=t.toString()+"\r\n"; 
for (int i =      0;i<el.length;i++) str+=el[i].toString()+"\r\n"; 
//перенаправьте в файл
          Toast.makeText(this.getBaseContext(),str, Toast.LENGTH_LONG).show();
          
          }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.06.2014, 15:41
Помогаю со студенческими работами здесь

Вывод LogCat
Вопрос заключается в следующем: пишу одно приложение, при этом использую опенгл. Логкет выдает некие сообщения: GC_CONCURRENT,GC_EXPLICIT,...

Не работает logcat
Добрый день. Когда-то давно (год назад) logcat работал на устаревшей версии Android Studio. Теперь на версии 3.5.1 logcat не выводит...

Ошибки LogCat
Ребят прошу у вас помощи, все никак не могу разобраться с ошибками, при запуске приложения сразу вылетает Логи LogCat: (буду очень...

Ошибки в logcat
День добрый! Решил написать простенькое приложение вот с этого примера ...

Таймстампы в Logcat
Откуда берет время Logcat в Android studio? На телефоне подключенном к компу - стоит дата 27.01.2020, на компе собственно тоже, а логкат...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru