Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
#1

Альтернатива LogCat - Программирование Android

09.11.2013, 07:15. Просмотров 2119. Ответов 27

Работаю в студии, до этого был эклипс...

LogCat использую по полной, но он меня не устраивает (ни в Студии, ни в Эклипсе, ни в Идее)!!!

1) Без фильтра читать не возможно. Фильтр иногда слетает. В каждом проекте приходится задавать заново. При переоткрытии проекта фильтр по умолчанию убран.
2) Цветов, которые могу использовать, всего 5, расширить нельзя (для комфорта нужно хотя-бы 10-15). Нельзя задать несколько цветов в одной строке. Иногда хочется чтобы строку FF88FF в логах закрасило нужным цветом.
3) Кроме моего сообщения переданного из явы, я должен еще и видеть дату-время сообщения(зачем? полторы секунды назад?) и название фильтра, и название процесса-отправителя и код отправителя... Лишняя информация занимает до 50% длины окна. Сдвигать бесполезно - следующее сообщение возвращает прокрутку назад (в начало строки).
4) Шрифт быстро изменить не получается. Ни размер ни название.
5) Сложные фильтры не возможны (только рыжие и синие, два фильтра по тегам, наличие "или" фильтров по содержимому)
6) Окошко не отделимо от окна среды, а если отделить, то ведет себя не так как хотелось - поверх текста мешает, выпрыгивает само, сжимать бесполезно из-за лишнее информации. Хотелось бы задать прозрачность, приклеить к бортику, убрать бортики.

Теперь вопрос... Меня одного это не устраивает? Вы привыкли или Вас устраивает? Есть ли альтернативные разработки от сторонних разработчиков? Это проблема виндовых версий или в линуксе что-то по другому? Имеет смысл писать такое "для всех" или эта утилитка полезна только мне (встрою все настройки еще на этапе компиляции "под меня")?

Пока что нашел только консольную(дос-мод) разработку на питоне которая раскрашивает черно-белый лог и программа на самом андроиде выводящая этот лог на рабочий стол (бесполезна если тестируется МОЯ программа перекрывая экран)

Начал разбирать механизм LogCat под Windows... (Кстати многие ЗДЕСЬ работают под Линуксом, а не под Windows?) ... вроде технически не тяжело перехватить, обработать "по другому". Причем даже не мешая стандартному обработчику. Пока-что проблема возникла только с русскими символами (юникод в ДОСе)... Можно попробовать решить средствами Win. Можно перекодировать при передаче в анси, а в досе (Делфи) назад.

Яву (обьектную) еще знаю плохо - можно ли ПОДМЕНИТЬ android.util.Log в МОЕМ проекте своим классом Log, а из него вызывать стандартную обработку с уже измененной строкой? Или лучше создать нечто вроде MyLog?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2013, 07:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Альтернатива LogCat (Программирование Android):

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

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

Logcat на устройстве - Программирование Android
Тестирую приложение, парсит сайт. На эмуляторе все проходит хорошо, а на телефоне иногда крашится в момент соединения к сайту. Как...

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

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

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

27
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
14.07.2015, 12:05  [ТС] #16
Хочу вообще избавиться от логкэт! Он сильно глючный и тормозной (как и большинство инструментов гугла). У меня умирает каждый час-три связь и приходится перзапускать adb

Планирую написать аналог на сокетах между андроидом и виндой на С++. Полноценный менеджер с самопереконектом на потерю связи. Тогда смогу из своей программы не только лог передавать, но и скриншоты и таблицы и файлы... Но в С++ еще новичок. Сейчас только подбираюсь к boost...

p.s. а зачем глобально менять цвета? моя программа поддерживает передачу строк любого цвета или строк в формате близком к html.

И зачем нужны фильтры? я их не переключал за 2 года кодинга. Понятно что это полезно для разработки в команде... но я лишние строки просто ремарю когда они уже "отработаны"..
0
mobrsa
1 / 1 / 0
Регистрация: 08.07.2015
Сообщений: 9
14.07.2015, 13:42 #17
Не совсем понял что значит без logcat и на на сокетах. Ты имеешь ввиду чтобы андройд-программа использовала какой-то специальный свой фреймворк, который через сокет-соединение коннектится к серверу (на локальной машине) и отдавала все логи туда?
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
14.07.2015, 14:22  [ТС] #18
Цитата Сообщение от mobrsa Посмотреть сообщение
Ты имеешь ввиду чтобы андройд-программа использовала какой-то специальный свой фреймворк, который через сокет-соединение коннектится к серверу (на локальной машине) и отдавала все логи туда?
Типа того. Один отладочный класс. Подключается в отладочную программу. И либо через другую установленную андроид-программу(предпочтительнее, убрав можно отключить лог, может работать оффлайн, может сам снимать скриншоты и переустанавливать отладочные программы), либо через свою-же библиотеку(apk будет иметь больше размер и чуть дольше собираться, но быстрее отсылка логов) отсылает логи отладчику. В моей программе и так это уже почти реализовано - я заменил Log.w на свою "оболочку" - класс Rep понятный еще и моей виндовой программе. Например Rep.hide(); по идее должна была свернуть виндовую программу в трей. А Rep.rcur(Cursor cursor) рисует в логе табличку из курсора вместе с шапкой и названиями полей.

Было время я это почти сделал на Делфи. Но надежность сокетов мне не понравилась - тормозила, часто передавала часть пакета... Теперь хочу суперкачественно на С++... За одно буду иметь разработку для работы с сокетами на андроиде - полезный навык... Много где еще может пригодиться...

Я НЕ доверяю adb!!! Он иногда теряет строки! Или передает дважды после оборванной части. Не знаю кто виноват - мой перехватчик, ansi2unicode преобразователь или сам adb! Время от времени связь просто рвется! Причин не знаю. Приходится перезапускать! Специально для этого сделал трей-программу которая запускает батник с "%ADB% connect 192.168.56.101:5555" при нажатии на F10 (глобальный хот-кей)... это раздражает...
0
mobrsa
1 / 1 / 0
Регистрация: 08.07.2015
Сообщений: 9
14.07.2015, 18:45 #19
Идея интересная.
Но тут надо разделять задачи:
1) транспортный уровень (это сокеты, logcat, ...), общем по какому каналу передаются данные
2) реализация разных фичь по отображению данных, например курсоров, или состояние объектов(чтото типа var_dump())...

Вот пункт (2) по сути в данном случае решающий, тут уже фантазия может разгуляться, от него зависит основной успех. Можно сделать очень удобный инструмент совершенно нового уровня. А транспорт тут особо роли не играет, в идеале хорошо бы сделать и то и то. И ещё... от logcat отказаться не получится в любом случае по следующим причинам:
- куча сторонних библиотек используют вывод в LogCat, не будешь же все заменять на Rep.warn()
- в Logcat сыпется полезная инфа от других компонентов, например от WebView, как я уже писал.

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

Добавлено через 4 минуты
И кстати, все фреймворки по логированию умеют отправлять логи на сервер (есть специальные Writer-ы), не знаю сокеты есть или нет но по http точно. Но они все оперируют только строками. А вот если бы можно было курсоры кидать... это было бы продвижение.
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
14.07.2015, 21:06  [ТС] #20
Цитата Сообщение от mobrsa Посмотреть сообщение
И ещё... от logcat отказаться не получится в любом случае по следующим причинам:
- куча сторонних библиотек используют вывод в LogCat, не будешь же все заменять на Rep.warn()
- в Logcat сыпется полезная инфа от других компонентов, например от WebView, как я уже писал.
Мне еще не приходилось отлаживать чужие библиотеки... Надеюсь что там и так все нормально работает...

Цитата Сообщение от mobrsa Посмотреть сообщение
А то получится что будет не очень удобно смотреть и в logcat и в твой инструмент одновременно.
Я сейчас смотрю в оба инструмента - мой полезен для ОГРОМНОГО количества строк (вполне можно догадаться на 1000 записей на экране и читабельно на 300х-400х). Поддержка сложных цветов. (пока все).

А в основном проще ловить ГЛОБАЛЬНЫЕ ошибки. Те что останавливают код! До 50 строк дикого "кликабельного" лога, который прямо привязан к тексту и открывает нужные классы на нужных строках. Это я не смогу подделать! Это только плагином в Idea (не охота еще и к IDE привязываться).

Прелесть сокетов с оффлайном еще и в том, я могу дать тестеру прогу, он весь день ходит с ней в оффлайне и ловит ошибки. А вечером отправляет моему сокет-серверу.

Про веб тоже думал... Отказался! Во первых это не ОНЛАЙН! Это "запросы". То-есть моя программа на винде не мгновенно получит строку, а будет опрашивать сервер раз в... 0.1-3 секунды... нагрузка на сервер дикая! А сокет может почти "спать" пока не получит пакет. (продумывал его еще и "пинговать" для удержания связи). Можно будет повесить как на винду, так и на хостинг. Но для отладки полезнее винда! Опять-же я всегда смогу увидеть зеленую лампочку в трее при появлении сети с устройством и красную при потери.

Цитата Сообщение от mobrsa Посмотреть сообщение
Но тут надо разделять задачи:
Я знаю! Но смысл писать на логкэт, если ТОЧНО знаю что у меня он подглючивает! Опять-же я не собираюсь на 100% отказываться от класики (логкэт)! На нем удобнее смотреть не мои логи!

Кстати... еще думал над таким вариантом:
Вы в курсе, что можно на андроиде увидеть логкэт строки???
Я видел код как это перехватывать!
Почему моя программа не может перехватывать adb и транслировать его в сокет...

Я поэтому и прервал проект - транспортный уровень хромал...
Передачу курсоров реализовать не сложно! Я это делал в логкэт ОДНОЙ командой! Одна для шапки. Одна для шапки+записи(тяжело понять какое поле какому полю принадлежит - все сжимается, но компактно на небольшую таблицу). И одна для вывода по записям:
поле:[тип]значение1
поле2:[тип]значение1

поле:[NULL]
поле2:[тип]значение2

поле:[тип]значение3
поле2:[тип]значение3

Для простого анализа хватает, но хотелось бы в нормальную таблицу(грид) загнать... с цветами по типам или/и по изменениям. Можно закладки для быстрого сравнения и поиска отличий...

... но... сначала нормальный "транспорт"! (а это на долго - неделю-две ОЧЕНЬ тяжелой работы и тестов не отвлекаясь на другое) Сейчас нет времени... да и критической необходимости...
0
mobrsa
1 / 1 / 0
Регистрация: 08.07.2015
Сообщений: 9
15.07.2015, 09:04 #21
Когда тестер будет ходить целый день с приложением, это немного другое. Я думал мы сейчас говорим об отладке непосредственно во время разработки. Для отловки всяких разных ошибок (не пойманных исключениях, запланированных внештатных ситуаций и т.д.) при глобальном тестировании или уже в продакшине, существуют другие специальные инструменты, например я сейчас пользуюсь bugsnag.com (но есть куча аналогов сейчас). Они сразу отсылают ошибку на сервер, а в случае сети нету, то сохраняют, потом как сеть доступна сразу отправляют пачкой. Там также имеется свой лог (в bugsnag.com это называется breadcrumps), чтобы можно было понять что произошло до возниконовения ошибки. Я сделал обёртку стандартного лога и пишу сообщение в logcat и в bugsnag.com при каждом вызове.
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
15.07.2015, 20:06  [ТС] #22
Цитата Сообщение от mobrsa Посмотреть сообщение
Когда тестер будет ходить целый день с приложением, это немного другое
Теоретически - да... Но тестер может сказать что-то вроде "с 2 до 3х дня немного тормозила такая фукнция"... Это не сбой! Это не умирание проги! Это значит что юзер начал вызывать плохо отлаженную функцию... Если прога при этом хотя-бы в лог писала чем в тот момент занималась - можно было бы понять где "узкое место" в программе... Опять-же он может находясь "в поле" включить инет и отправить мне все сообщения которые недавно его программа выводила... Я исправлю и отправлю ему новый apk. Адаптированный теперь и под характеристики его устройства...

... но согласен, это не основная функция... Скорее "бонус"...

Добавлено через 2 часа 56 минут
Цитата Сообщение от mobrsa Посмотреть сообщение
Могу и на С++ помочь (стаж был 6 лет) но уже не писал на нём года 3, так что уже сложнее.
А на чем Вы писали? Знаете boost? Там кажется мультиплатформенные сокеты лежат...

Никак не могу понять чего от него ждать и на сколько затянется создание "HellowWorld" в MinGW+CodeBlock. Поэтому "по привычке" (проходил подобное уже с другими "мелочами" в С++) откладываю ВЕСЬ проект в долгий ящик... (я на изучение и адаптацию кодинга консольных программ на С++ месяца 3-4 убил)

Надо написать (самый) простой клиент-сервер на С++ на сокетах с удержанием связи и учетом подсоединившихся. Позднее когда разберусь, попробую портировать и в андроид...
0
mobrsa
1 / 1 / 0
Регистрация: 08.07.2015
Сообщений: 9
16.07.2015, 10:17 #23
Цитата Сообщение от Tester64 Посмотреть сообщение
А на чем Вы писали? Знаете boost? Там кажется мультиплатформенные сокеты лежат...
По поводу С++, boost знаю (знал) частично... без него никуда. Писал под винду разные десктопные не коммерческие приложения.
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
16.07.2015, 17:58  [ТС] #24
Цитата Сообщение от mobrsa Посмотреть сообщение
boost знаю (знал) частично...
Меня больше сокетная часть интересует!

Я (наконец, убив всего 4 часа) смог подключить буст и запустить нечто вроде хелловорда. И даже скомпилил первый пример сокет клиента без сервера... Тяжело было понять как собирать!

Слышал (в том числе от местных) что его можно для андроида использовать... Для этого надо "по другому" собрать? Или и так должно пойти?

Если есть примеры приличного сервера и клиента, скинь пожалуста! Очень тяжело понять как контролировать список подключившихся клиентов, от какого пришел пакет и кому его надо отправить...
0
mobrsa
1 / 1 / 0
Регистрация: 08.07.2015
Сообщений: 9
16.07.2015, 19:22 #25
Я уже честно говоря всё позабывал в С++, давно не нём ничего не писал. Но в целом, не понял проблемы контролировать клиентов. В главном потоке открывается сервер-сокет, ждёт соединения. Как только соединение установлено выделяем для него отдельный поток, в нём передаём данные туда-сюда, в общем всю логику. Храним список этих потоков с соединениями - это наши клиенты. Ты же имеешь ввиду TCP-сокеты?
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
16.07.2015, 20:57  [ТС] #26
Цитата Сообщение от mobrsa Посмотреть сообщение
В главном потоке открывается сервер-сокет, ждёт соединения. Как только соединение установлено выделяем для него отдельный поток, в нём передаём данные туда-сюда, в общем всю логику. Храним список этих потоков с соединениями - это наши клиенты.
Общая идея ясна! Просто в Делфи это было изначально реализовано в Классе потока. И удержание потоков/клиентов и возможность отправить любому и закрыть любого... В идеале хочу получить такой-же класс! Удобный для работы и требующий задумываться о правильности потоков при переносе в другой проект...
В общем... не помешал бы рабочий пример программы где вся эта каша реализована и хоть как-то но работает...

Не охота начинать с самого нуля...

А про привязку буста к NDK андроида что-нибудь слышали?
0
mobrsa
1 / 1 / 0
Регистрация: 08.07.2015
Сообщений: 9
17.07.2015, 11:43 #27
Цитата Сообщение от Tester64 Посмотреть сообщение
А про привязку буста к NDK андроида что-нибудь слышали?
Нет, я с NDK вообще не знаком пока что, не было необходимости.
По поводу примеров с сокетами, я думою в инете полно их, не такая уж эта ведь редкая задача. Думою имеется даже куча библиотек которые это всё реализуют в удобном виде (как ты говоришь в делфи было).

Добавлено через 12 минут
По поводу Boost в Android посмотри в сторону Crystax NDK (https://www.crystax.net/ru)
1
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
17.07.2015, 16:10  [ТС] #28
Цитата Сообщение от mobrsa Посмотреть сообщение
По поводу Boost в Android посмотри в сторону Crystax NDK (https://www.crystax.net/ru)
Сайт такой, что глаза плавятся... нечитабельный шрифт! тонкий, почти прозрачный, ссылки почти сливаются с текстом! Копирую его в текстовик чтобы читать...

и полезной инфы почти нет... мы круче, мы лучше, запущена компания по сбору средства...

0.6-2Гб в ЕХЕ (а не в исходниках или либах). Ни слова об опенсорсе и доступности исходников, но программу СРАЗУ можно заливать на гугл-плей. NDK же не так действует! Она либы создает! Доступные в яве!

Думаю сначала изучу класику... И с гуглом ссорится не хочется! NDK - это ее разработка! А альтернативы могут не поддерживаться в следующих версиях...

К тому-же я разобрался с основами NDK. Сделал даже тестер в кодеблоксе кода перед компиляцией в NDK. Просто еще не знаю как бустом (вообще) пользоваться, не говоря про подключение его к NDK...

Цитата Сообщение от mobrsa Посмотреть сообщение
Думою имеется даже куча библиотек которые это всё реализуют в удобном виде (как ты говоришь в делфи было).
Мне не библиотеки нужны!

Мне нужна оболочка к Boost с удобным выводом "реакторов". А не еще одни либы... По идее это должно быть 2 файла h+cpp! А в идеале консольный клиент и сервер с полным тестом по работе с клиентами - "к нам подключились", мы отправили, мы удерживаем и слушаем... Уже на основе примеров буду разрабатывать свой протокол... Пока не находил!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2015, 16:10
Привет! Вот еще темы с ответами:

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

Android Studio и logcat - Программирование Android
Добрый день! После завершения программы в logcat продолжает сыпаться сообщения: I/SurfaceFlinger: surface flinger stars...

В LogCat не выводится сообщение - Программирование Android
Log.d(TAG, "найдем View-элементы"); Ввожу такой код в активити в onCreate все работает запускается а в логах никакого сообщения нет...

Ошибка в logcat AndroidStudio - Программирование Android
Здравствуйте! Написал простенькое приложенице в Студии, ошибок вроде нет. Но при запуске эмулятора приложение вылетает. Не могу понять...


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

Или воспользуйтесь поиском по форуму:
28
Yandex
Объявления
17.07.2015, 16:10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru