0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Автогенерация Android Log TAG в Android Studio/Intellij idea

Автогенерация Android Log TAG в Android Studio/Intellij idea

В Intellij Idea, когда я набирал psfs , а затем нажимал Ctrl+J IDE, получался диалог :

И когда я нажимаю Enter , я получаю

Я знаю, где я могу настроить свой собственный выход

Но я не могу ни одного дока, как я могу написать свой собственный живой шаблон.

В конце концов я хочу получить следующий результат :

Набрав : psfst — > нажмите Ctrl+J — > нажмите Enter

Результат :

public static final String TAG = .class.getSimpleName();

Это будет очень полезно, потому что у меня есть привычка регистрировать свои занятия.

4 Ответов

  • Лучше всего использовать Android Studio или Intellij Idea wth Плагины?
  • Является ли Intellij Idea IDE стабильной для развития Android?
  • Что такое версия плагина Android, включенная в IntelliJ IDEA?
  • Intellij Idea Ultimate или Intellij Idea Plus PyCharm и Android Studio
  • Различия между IntelliJ IDEA 13 и Android Studio

Я нахожу решение

1) Создайте новый живой шаблон в простой группе
2) в тексте шаблона :

3) Определите область использования :

4) Выберите ярлык :

наконец, нажмите на Edit variables и измените значение выражения на className()

Щелкните Ok , Apply , Ok и используйте.

Такой ярлык уже существует в студии Android-write logt и enter, когда курсор находится в области видимости класса.

Для тех, кто использует Android Studio 3 и Kotlin , необходимо изменить способ установки живых шаблонов :

Редактор > > Живые Шаблоны > > AndroidLog

По умолчанию это только для Java

Добавить Kotlin нажав кнопку «change» и проверить Kotlin

и после этого он снова будет работать!

  • Как установить новые расширения Android Studio на IntelliJ IDEA
  • Android стиль кода в Intellij Idea / Android Studio
  • Могу ли я использовать Intellij J IDEA для разработки приложений android?
  • Как добавить пользовательское постфиксное завершение Kotlin в IntelliJ IDEA / Android Studio?
  • Установите Плагины Ultimate edition IntelliJ в Android Studio

Другое решение не использовать значение по умолчанию TAG для каждого класса и использовать этот метод для получения TAG:

Пример вызова из MainActivity — onResume:

Похожие вопросы:

Возможно ли в данный момент добавить расширения Android Studio к текущей установке IntelliJ IDEA? Ксавье Дюкро и Тор Норбай упомянули в своем выступлении, что Android Studio является продолжением.

До Android Studio я использовал android-formatting.xml в качестве стиля кода в Eclipse. Как я могу настроить Android Studio / Intellij Idea для форматирования кода, как в Eclipse? UPDATE Я.

У меня есть вопрос о том, что большинство разработчиков android теперь используют Android Studio в качестве IDE для разработки android приложений. Я использую Intellij J IDEA в качестве IDE для.

Похоже, я не могу добавить пользовательские постфиксные дополнения для Kotlin ни в IntelliJ IDEA (2018.3), ни в Android studio (3.2.1). Если я перейду в настройки / редактор / общие / Постфиксное.

У меня есть окончательный выпуск IntelliJ Idea w/ действительной лицензии. Существует очень полезный плагин, доступный только в полной версии с именем Database Tools и поддержкой SQL , который.

У нас есть существующая кодовая база java, где мы используем intellij idea для разработки. Мы создаем приложение android, в котором мы будем совместно использовать код и другие ресурсы с уже.

Мне было интересно, что Intellij Idea IDE стабильна для развития Android или NOT ? На странице разработчика Android он говорит : Новая среда разработки Android под названием Android Studio.

. и как это выяснить (авторским способом)? В Android Studio 0.8.11: когда я проверяю то же самое, он показывает 10.0.8.11. что соответствует http://tools.android.com/recent и.

Я кодирую Android приложения, серверный код Python и использую фреймворк Spring. У меня есть студенческая лицензия на JetBrains. Мне нравятся организованные вещи, поэтому я должен использовать.

Читать еще:  Блокировка em sim me что это

Долгое время Android Studio обеспечивала лучшую интеграцию ide по сравнению с IntelliJ IDEA. Насколько мне известно, версия 13 из IntelliJ IDE действительно включает в себя все функции, которые.

Панель Logcat в Studio

Logcat в среде разработки Android Studio располагается на отдельной вкладке, интерфейс которой представлен на следующем скриншоте. Слева вертикально располагаются кнопки управления сообщениями : очистка, перемещение по списку и т.д. Интерес представляет расположенный сверху справа компонент с выпадающим списком/меню. Если выбрать представленный на скриншоте пункт «Edit Filter Configuration», то можно определить фильтр сообщений, окно которого изображено на следующем скриншоте.

Фильтр сообщений

Logcat позволяет создать набор из нескольких фильтров. Достаточно только для каждого фильтра определить его наименование «Filter Name» и тег сообщений «Log Tag». Значение тега сообщения регистрируется классом android.util.Log.

Создадим простой пример протоколирования сообщений. В примере переопределим методы активности; в каждом методе будем протоколировать соответствующее сообщение.

Листинг активности

После старта приложения переходим на вкладку Locat и просматриваем список регистрируемых сообщений. Чтобы исключить сообщений системы установим фильтр State (справа, сверху). После этого можно менять ориентацию устройства (portrait => landscape => portrait) и контролировать список сообщений.

Протоколируемые сообщения можно просматривать не только с помощью Logcat. Они также попадают и на вкладку Run (см. следующий скриншот), но только с ме́ньшей функциональностью (отсутствует время регистрации, нельзя фильтровать и т.д.).

Формат сообщения

Logcat представляет сообщения в определенном формате : «date time PID-TID/package priority/tag: message». Поле даты (date) имеет формат MM-DD (месяц–день). Формат времени (time) HH24:MI:SS.SSS (часы:минуты:секунды.мс) включает милисекунды. Значения идентификаторов процесса PID и потока TID могут совпадать, если существует только один поток. Пример сообщения : 02-08 08:43:51.557 11608-43308/com.android.test.p08activity D/ACTIVITY_STATE: onStop.

Английский вариант полного описания Logcat.

Контроль протоколирования, BuildConfig

На этапе разработки приложения вывод отладочных сообщений, конечно же, полезен и необходим. Но что делать с этими сообщеними в готовом релизе? Если проект включает несколько модулей с различными тегами отладочных сообщений, то подготовка очередного релиза потребует определенных усилий с ручным удалением отладочных сообщений и комментариев. Иногда программисты используют условные выражения для вывода сообщений/комментариев. Например :

В этом примере сообщения будут протоколироваться в отдельной процедуре WriteLog только если IS_RELEASE=false. Одним движением (IS_RELEASE=true) можно блокировать протоколирование сообщений перед созданием готового apk-файла.

Начиная с 17-ой версии Android Build Tools в приложении автоматически формируется класс BuildConfig, содержащий статическое поле DEBUG с признаком отладочной сборки. При использовании данного класса перед протоколированием необходимо выполнить следующую проверку :

Объект BuildConfig можно расширить и включить в него свой «тег». Для этого необходимо внести соответствующие изменения в секцию buildType сборочного build.gradle файла проекта. Вот как может выглядеть секция buildType для тега ACTIVITY_STATE :

Конфигурация releaseWithLog будет релизной сборкой с протоколированием. Соответственно в коде приложения необходимо будет выполнять следующую проверку :

Кому и для чего нужно это приложение на Андроиде

Собственно обычному пользователю программа MTKLogger не нужна. Без наличия специальных знаний человек все равно мало что поймет из того, что записалось в журнал.

С другой стороны людям, которые разрабатывают программное обеспечение для Android или занимаются ремонтом телефонов приложение жизненно необходимо и они уже знают что же это MTKLogger на мобильном телефона с ОС Андироид. Именно через него можно узнать, что произошло перед сбоем в программе и как ведет себя то или иное оборудование.

Заключение

Кто-нибудь может сказать, что String.format и определение источника — долгие операции, а поэтому так писать не надо. Могу возразить, что при выпуске продакшен-версии вызовы логов можно (и нужно) отключать (с помощью флага ENABLED или с помощью Proguard), так что на производительность они не повлияют.

Ещё есть мысль, что в андроиде вполне юзабелен log4j. Возможно. Но добавление библиотеки, функциональность которой никак не пригодится пользователю, — более чем сомнительное решение. А логи Андроида с описанной доработкой вполне себе ничего.

Часть 3. Пишем для Android

В build.gradle кладем вещи: одна — что у нас DEBUG режим, вторая — SERVER_LOGGING.
Подключение логгера будет выглядеть вот так (этот код надо вызвать в Application):

Как у нас вообще выглядит отправка лога? У лога есть приоритет, сообщение, тэг, дата. И урл, куда его отправлять, в случае удаленного логгинга. Все это дело возвращает Completable.

Нам надо отправлять это все на сервер с помощью, например, Retrofit’a:

Читать еще:  Play market белый экран что делать

Теперь давайте напишем саму отправку.

Теперь давайте посмотрим на наш класс ServerLoggingTree. Там мы оверрайдим метод логгинга и вызываем в нем метод отправки на сервер.

На этом, собственно, часть для Android закончена.

Logging is one of the most used utilities in the Android framework. It is really helpful in debugging your code when debugging by break-point just won’t work.

It is generally a good practice to place Log statements in your code. These statements help you keep a track of flow control in your application. Similarly, it is not recommended to have log statements in your release ready code, since those log statements can be read by anyone who connects their phone to a PC. So, when releasing your application to the play store, it is recommended to remove all the log statements from your code.

But this can be a real pain. There are so many log statements all over your code. Now you have to find each one and remove it from your code for the release version.

Another problem with the default logging mechanism is that you need to pass the TAG every time you write a log statement.

Wouldn’t it be wonderful if the log statements would automatically disable themselves when in production? Wouldn’t it be great if the Log statements automatically picked up the TAG/classname while logging and you could just focus on writing better code?

Well, problems such as these and many more are solved by a better logging library in android, called Timber (by Jake Wharton).

It is a light-weight, easy to use library. It takes care of most of the maintenance you need to do while logging so that you can focus more on writing great code and less on the maintenance stuff.

Let’s go ahead and create a sample application to see how you can include Timber in your android application and make your logging life easier.

Getting Started

We will be creating a simple Android application with 4 buttons. Each button would print out different priority log statement on the console.

Create a new project in Android and add a dependency for Timber in your app level build.gradle file. At the time of this writing, this is the latest dependency version for timber:

Initializing Timber

With the dependency downloaded, now it’s time to initialize the timber library. The best place to initialize timber is in the Application class which will be active during the entire lifetime of the application. So, let’s create a custom application class and initialize our Timber library in it:

Creating MainActivity

Let’s now create our MainActivity by adding 4 buttons and setting on click listeners to each of them. Here is my activity_main.xml file. I’m using ConstraintLayout as my root layout and including 4 buttons each for different logging levels.

Now it’s time to set click listeners to these buttons and print a log statement every time a button is clicked. I’m using kotlin’s synthetic bindings instead of regular findViewById calls or Butterknife. Here is my MainActivity.kt file:

Notice how we didn’t need to initialize any TAG variable in our class, Timber does it automatically for you.

Customizing Timber for Debug and Release

Now, this is where Timber really shines. What we’ve done till now was nothing great, just printing the log statements on button clicks. But as you know, logging in production is not a good idea. We will write code to disable the logs for production while keeping them enabled during debug mode.

We’ll write an if block to check if our app is in debug mode and enable logging for that. If not, then we want to initialize Timber using a custom tree.

Here’s the modified MainApplication.kt class:

As you can see, we’ve initialized timber using a custom ReleaseTree when in release mode. Now let’s go ahead and create our own release tree.

Creating a Custom Tree

Creating a release tree is fairly simple. Create a new Kotlin class and extend it from Timber.Tree. Implement all the abstract functions and you’re good to go.

Here’s my ReleaseTree.kt:

As you can see, whenever there is an error, we can send the log to an online service such as Firebase CrashAnalytics or Crashlytics and not logging out on production.

Читать еще:  Виртуальная сеть VPN Windows 10 что это

Result

Benefits of using Timber vs Android Logging

Let’s look at some of the benefits of using Timber library instead of the default Log utility by android sdk.

  • No need to worry about TAGS: Timber generates the TAGs automatically for you so you don’t have to worry about including a global TAG in every class.
  • No need to manually remove Log statements: As already shown, it’s really easy to disable Logging for release apps. Hence, you no longer have to go through your entire code and manually remove all the logs.
  • Customized behavior on production: In production versions, you don’t want to log, although you definitely want to log any crashes that might occur. You can implement this by using a custom debug tree (as shown above) which instead of logging to the logcat, sends the logs to your crashlytics service.
  • Customized Meta-Data: You can include customized metadata with your log statements. For example, I’ve added class name, line number and method name from which the log statement is getting printed in the implementation above. Having this data at your disposal can make debugging easier.
  • Lightweight: Does not increase your app size/method count by much. Really lightweight library as it is just a wrapper over the already existing log utility.

Conclusion

For a long time I had ignored the use of log statements and printing out better logs. As my code got bigger and problems got more complex, I realized I needed to adopt better and more efficient debugging routines. Hence, using Timber is one step in the right direction.

*Important*: I’ve created a SLACK workspace for mobile developers where we can share our learnings about everything latest in Tech, especially in Android Development, RxJava, Kotlin, Flutter, and overall mobile development in general.

Like what you read? Don’t forget to share this post on Facebook, Whatsapp, and LinkedIn.

You can follow me on LinkedIn, Quora, Twitter, and Instagram where I answer questions related to Mobile Development, especially Android and Flutter.

If this article was helpful, tweet it.

Learn to code for free. freeCodeCamp’s open source curriculum has helped more than 40,000 people get jobs as developers. Get started

Any quality Android application will keep track of what it’s doing through application logs. These logs allow easy debugging help for the developer to diagnose what’s going on with the application. Full Android Documentation can be found here, but a summary follows:

Basic Logging

And the Android system will write a message to the logcat:

TIP:
Notice the process id and the thread id. If they are the same — the log is coming from the main/UI thread!

Any tag can be used, but it is common to use the class name as a tag:

Log Levels

  • ERROR : Log.e()
    • Used to indicate critical failure, this is the level printed at when throwing an Exception .
  • WARN : Log.w()
    • Used to indicate a warning, mainly for recoverable failures
  • INFO : Log.i()
    • Used to indicate higher-level information about the state of the application
  • DEBUG : Log.d()
    • Used to log information that would be useful to know when debugging the application, but would get in the way when running the application
  • VERBOSE : Log.v()
    • Used to log information that reflects the small details about the state of the application
  • ASSERT : Log.wtf()
    • Used to log information about a condition that should never happen.
    • wtf stands for «What a Terrible Failure».

Motivation For Logging

Followed by a bunch of stack traces that would eventually lead to the offending line, where stepping through with a debugger would eventually lead to the problem

However, the log trace of an application with logging enabled could look something like this:

A quick glance at the logs and it is obvious that the file was empty.

Things To Considering When Logging:

Log Readability:

Performance:

Security:

Conclusion:

For more documentation and examples visit Logging and using Logcat

Использование Android Studio

Скрыть / показать распечатанную информацию:

Контрольная многословия ведения журнала:

Отключить / включить окно открытия журнала при запуске приложения запуска / отладки

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector