有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否可以创建一个类来处理安卓中的所有日志代码(例如log.d(TAG,message))

在我的情况下,如果可能的话,我想找到一种方法: 我有很多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 A{
       A(){
          //my code
       }

       public void myMethod(){
          //my code
       }

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

B级

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");
    }

}

所以,在未来的开发中,如果我想删除或添加一些日志代码,我只需要在一个类中管理它

在原生Java Android中有什么方法可以做到这一点吗? 多谢各位


共 (4) 个答案

  1. # 1 楼答案

    除了创建自己的日志记录程序外,您还可以使用proguard删除您选择的所有日志调用(或全部),而无需更改源。看这个问题:Removing Log call using proguard

  2. # 2 楼答案

    是的,您可以为包含带有标志的静态方法的日志创建一个单独的类,并在不需要时禁用该标志

  3. # 3 楼答案

    也许这将有助于让你的任务在同一个班上对所有人都更容易

    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);
            }
        }
    }
    
  4. # 4 楼答案

    试试看,我想对你有帮助

    Logger.i(TAG, AppConst.EACH_PAGE_FOR_LOG);
    

    记录器示例:

    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;
    }
    
    
    }