Можно ли создать один класс, который обрабатывает весь код журнала в Android (например, Log.d (TAG, сообщение)) - PullRequest
0 голосов
/ 14 февраля 2019

Я хочу найти способ, если это возможно в моем случае, например, так: у меня много классов Java:

Первый:

 class A{
       A(){
          Log.d(TAG,"message construct A");
       }

       public void myMethod(){
          Log.d(TAG,"message A");
       }

       public void myAnotherMethod(){
          Log.d(TAG,"message another A");
       }
    }

Второй:

class B{
       B(){
          Log.d(TAG,"message construct B");
       }

       public void myBMethod(){
          Log.d(TAG,"message B");
       }

       public void myAnotherBMethod(){
          Log.d(TAG,"message another B");
       }
}

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

Интересно, возможно ли для какого-то такого дизайна управления журналами:

A.class

class A{
       A(){
          //my code
       }

       public void myMethod(){
          //my code
       }

       public void myAnotherMethod(){
          //my code
       }
}

B.class

class B{
       B(){
          //my code
       }

       public void myBMethod(){
          //my code
       }

       public void myAnotherBMethod(){
          //my code
       }
}

и управление классами журналов:

class Log {

    onObjectCreated(){
       if(object == A) Log.d(TAG,"construct A");
       else Log.d(TAG,"construct B");

    }
    onMethodCall(){
       Log.d(TAG,"message A");
    }

    onMethodBCall(){
       Log.d(TAG,"message B");
    }

}

Итак, в будущих разработках, если я хочу удалить или добавить код журнала, мне просто нужноуправлять им в одном классе

Есть ли способ для этого в Native Java Android?Спасибо.

Ответы [ 4 ]

0 голосов
/ 14 февраля 2019

Помимо создания собственного регистратора, вы также можете использовать proguard для удаления всех вызовов журнала по вашему выбору (или всех) без необходимости изменения ваших источников.См. Этот вопрос: Удаление журнала вызовов с помощью proguard

0 голосов
/ 14 февраля 2019

Да, вы можете создать отдельный класс для LOGS, содержащий статические методы с флагом, и отключить этот флаг, когда вам это не нужно.

0 голосов
/ 14 февраля 2019

Может быть, это поможет сделать вашу задачу проще для всех в одном классе

import android.util.Log;


public class AppLogClass {

    public void e(String tag, String msg){
        if (BuildConfig.DEBUG) {
            Log.e(tag, msg);
        }
    }

    public void d(String tag, String msg){
        if (BuildConfig.DEBUG) {
            Log.d(tag, msg);
        }
    }
}
0 голосов
/ 14 февраля 2019

Попробуйте, я думаю, это будет полезно для вас.

Logger.i(TAG, AppConst.EACH_PAGE_FOR_LOG);

Logger Пример:

public class Logger {

public static void d(String tag, String data){
    if(BuildConfig.DEBUGGABLE) {
        Log.d(tag, data);
    }
}

public static void i(String tag, String data){
    if(BuildConfig.DEBUGGABLE) {
        Log.i(tag, data);
    }
}

public static void e(String tag, String data){
    if(BuildConfig.DEBUGGABLE) {
        Log.e(tag, data);
    }
}

public static void e(String tag, String data, Throwable t){
    if(BuildConfig.DEBUGGABLE) {
        Log.e(tag, data, t);
    }
}

public static void w(String tag, String data){
    if(BuildConfig.DEBUGGABLE) {
        Log.w(tag, data);
    }
}

public static void wtf(String tag, String data){
    if(BuildConfig.DEBUGGABLE) {
        Log.wtf(tag, data);
    }
}

public static boolean isDebugEnabled(String tag) {
   return BuildConfig.DEBUGGABLE;
}


}
...