2013-04-16 11 views
3

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

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

В некоторых примерах андроида я заметил import android.util.Log;. Мне интересно, если это стандартный способ ведения журнала для Android. Если нет, то это хороший способ сделать это (например, мне очень нравится log4j при кодировании в java.)?

  1. Может ли android.util.log сделать рулонный журнал, как я прошу?

  2. Где android.util.Log написать по умолчанию?

  3. Если вы просто хотите консоль, это способ записать это в скользящий файл журнала на устройстве Android, который затем может быть отправлен по электронной почте, если есть проблема с программой?

+3

[Start Here ] (http://developer.android.com/tools/debugging/debugging-log.html) – FoamyGuy

+0

Для прокатки вы можете использовать эту библиотеку http://nikedlab.com/android-log-rolling-library.html – NikedLab

ответ

1

Может android.util.log сделать качению журнал, как я с просьбой?

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

Где находится android.util.Log написать по умолчанию?

2) Регистрационная система Android, которую можно просмотреть через logcat. Подумайте об этом, как журналы событий Windows, если вы знакомы с этим. Я бы загрузил программу logcat и прокручивал ваши системные журналы, чтобы ознакомиться с ними.

Если вы хотите просто настроить консоль, это можно записать в скользящий файл журнала на устройстве Android, который затем может быть отправлен по электронной почте, если есть проблема с программой?

3) Вы можете написать свой собственный журнал каротажа в файловой системе, а затем отправить его по электронной почте. Однако вам придется реализовать эту функциональность. Вы также можете попробовать, если есть какие-либо сторонние инструменты/библиотеки ведения журналов, которые могут удовлетворить ваши потребности.

1

Прежде всего. Вы не должны включать интенсивный журнал по умолчанию в ваш производственный код. Мы решили это, написав расширение класса журнала по умолчанию, как показано ниже.

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

Во-вторых, используйте приложение для хранения и извлечения журналов! Попробуйте CatLog или аналогичный.

Удачи вам!

public class MyLog { 

    private static boolean m_Enabled = BuildConfig.DEBUG; 

    public MyLog() { 

    } 

    public static void e(String tag, String msg) { 
     if (m_Enabled) Log.e(tag, msg); 
    } 

    public static void w(String tag, String msg) { 
     if (m_Enabled) Log.w(tag, msg); 
    } 

    public static void i(String tag, String msg) { 
     if (m_Enabled) Log.i(tag, msg); 
    } 

    public static void d(String tag, String msg) { 
     if (m_Enabled) Log.d(tag, msg); 
    } 

    public static void v(String tag, String msg) { 
     if (m_Enabled) Log.v(tag, msg); 
    } 

    public static void enable() { 
     m_Enabled = true; 
    } 

    public static void disable() { 
     m_Enabled = false; 
    } 

    public static boolean isEnabled() { 
     return m_Enabled; 
    } 
} 
+0

Я думаю это отличная реализация, если вы выполняете минимальное ведение журнала и хотите использовать его для отладки всех частей вашего кода. Например, я, возможно, не захочу реализовывать отладку для определенных областей, пока я буду для других (logcat может перегружаться). Я думаю, что я предпочел бы использовать if (DEBUG) {Log ....;} по соображениям производительности. Я бы сделал дополнительный вызов метода с вышеупомянутой реализацией. –

+0

Я с тобой. Кроме того, вы не рискуете NPE при попытке разыменовать какой-либо объект для печати в журнале. Недостатком является то, что код раздувается множеством операторов if (...). Как я скучаю по C/C++ и определяет! – mach

1

Существует документация и примеры, о том, как сделать размерно-ограниченных качению журнала на устройстве Android с помощью стандартного Log.X Android вызов & «LogCat» - например, см here и here

Смежные вопросы