среда, 14 декабря 2011 г.

Ведение логов в Android

Android имеет отличный интерфейс для работы с логированием. Встает вопрос об отключении ведения логов или их ограничение. Для управления выдачей отладочной информации стандартный класс Log желательно обернуть с учетом уровней логов.




import android.util.Log;

public class Logout {

 public static void d(String tag, String msg) {
  if (Log.isLoggable(tag, Log.DEBUG)) {
   Log.d(tag, msg);
  }
 }
 public static void d(String tag, String msg, Throwable tr) {
  if (Log.isLoggable(tag, Log.DEBUG)) {
   Log.d(tag, msg, tr);
  }
 }

 public static void i(String tag, String msg) {
  if (Log.isLoggable(tag, Log.INFO)) {
   Log.i(tag, msg);
  }
 }
 public static void i(String tag, String msg, Throwable tr) {
  if (Log.isLoggable(tag, Log.INFO)) {
   Log.i(tag, msg, tr);
  }
 }
 
 public static void e(String tag, String msg) {
  if (Log.isLoggable(tag, Log.ERROR)) {
   Log.e(tag, msg);
  }
 }
 public static void e(String tag, String msg, Throwable tr) {
  if (Log.isLoggable(tag, Log.ERROR)) {
   Log.e(tag, msg, tr);
  }
 }

 public static void v(String tag, String msg) {
  if (Log.isLoggable(tag, Log.VERBOSE)) {
   Log.v(tag, msg);
  }
 }
 public static void v(String tag, String msg, Throwable tr) {
  if (Log.isLoggable(tag, Log.VERBOSE)) {
   Log.v(tag, msg, tr);
  }
 }

 public static void w(String tag, String msg) {
  if (Log.isLoggable(tag, Log.WARN)) {
   Log.w(tag, msg);
  }
 }
 
 public static void w(String tag, String msg, Throwable tr) {
  if (Log.isLoggable(tag, Log.WARN)) {
   Log.w(tag, msg, tr);
  }
 }
}
В самом проекте обращение к классу Log андроида следует заменить на обращение к методам данного класса. Только следует помнить что, tag.length() > 23.
Отсюда два главных преимуществ: не нужно следить за удалением выводов в лог из релиза и не нужно менять переменные уровней логов.
Изменение уровня логирования на устройстве происходит очень просто: откройте консоль adb и дайте команду:
setprop log.tag. 
Этот код совместим c Android API 1 и выше.
По мотивам оф. описания класса Log


Комментариев нет:

Отправить комментарий