log信息是开发中最最重要的部分,那么如何更好的捕获信息呢?接下来就让我们了解一下强大的log框架–Logger。

什么是logger?

亮点?

  • 能够提供:
    1. 线程信息:log在哪个线程
    2. 类信息:log在哪个类
    3. 方法信息:log在哪个方法的哪一行
    4. 漂亮地打印json
    5. 漂亮的打印XML
    6. 漂亮的换行分割
    7. 整洁的输出
    8. 跳转到源代码

为啥使用它?

  1. 默认实现是对于android.util.Log的封装
  2. 弥补了“android的logcat的message有字符长度的限制,超过将直接截断”的缺陷
  3. 支持参数添加占位符来格式化字符串,Logger.d(“hello %s”, “world”);
  4. 支持直接打印List,Set,Map,数组类型等引用类型
  5. 指定任意TAG
  6. 配置初始化选项
  7. 支持自定义CustomLogAdapter实现LogAdapter,替换android.util.Log

如何使用?

添加依赖:

compile 'com.orhanobut:logger:1.15'
  
  
  • 1
  1. 配置初始化选项(非必须选项,不配置的情况下会使用系统默认的初始化配置
 Logger
  .init("mytag")    //LOG TAG默认是PRETTYLOGGER 
  .methodCount(3)                 // 决定打印多少行(每一行代表一个方法)默认:2
  .hideThreadInfo()               // 隐藏线程信息 默认:显示
  .logLevel(LogLevel.NONE)        // 是否显示Log 默认:LogLevel.FULL(全部显示)
  .methodOffset(2)                // 默认:0
  .logAdapter(new AndroidLogAdapter()); //可以自己构造适配器默认:AndroidLogAdapter
}
  
  
    效果展示:

    默认效果:
    这里写图片描述


    Logger.init().logLevel(LogLevel.FULL).methodCount(3);
      
      
    • 1

    methodCount(3) ,中间方法区数量变为3,每一行代表一个方法。

    这里写图片描述


    2.打印不同level的Log
    Logger.v(String message); // VERBOSE级别,可添加占位符
    Logger.d(Object object); // DEBUG级别,打印对象
    Logger.d(String message); // DEBUG级别,可添加占位符
    Logger.i(String message); // INFO级别,可添加占位符
    Logger.w(String message); // WARN级别,可添加占位符
    Logger.e(String message); // ERROR级别,可添加占位符
    Logger.e(Throwable throwable, String message); // ERROR级别,可添加占位符
    Logger.wtf(String message); // ASSERT级别,可添加占位符
    Logger.xml(String xml);
    Logger.json(String json);

    效果展示:
    Logger.v("vvvvvvvv");

    这里写代码片


    Logger.d("dddddddd");

    这里写图片描述


    Logger.e("eeeeeeee");

    这里写图片描述


    Logger.w("wwwwwwww");

    这里写图片描述


    Logger.v("vvvvvvvv");

    这里写图片描述


    Logger.wtf("wtfwtf");

    这里写图片描述


    Logger.json("{\n" +
                    "    \"name\": \"BeJson\",\n" +
                    "    \"url\": \"http://www.bejson.com\",\n" +
                    "    \"page\": 88,\n" +
                    "    \"isNonProfit\": true,\n" +
                    "    \"address\": {\n" +
                    "        \"street\": \"科技园路.\",\n" +
                    "        \"city\": \"江苏苏州\",\n" +
                    "        \"country\": \"中国\"\n" +
                    "    },\n" +
                    "    \"links\": [\n" +
                    "        {\n" +
                    "            \"name\": \"Google\",\n" +
                    "            \"url\": \"http://www.google.com\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "            \"name\": \"Baidu\",\n" +
                    "            \"url\": \"http://www.baidu.com\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "            \"name\": \"SoSo\",\n" +
                    "            \"url\": \"http://www.SoSo.com\"\n" +
                    "        }\n" +
                    "    ]\n" +
                    "}");
      
      

      这里写图片描述


          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              methodA();
          }
      
          void methodA(){
              methodB();
          }
      
          void methodB(){ Logger.d("methodB","sas","asdasdasd",1);
          }
        
        

        这里写图片描述


        Logger.xml("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                        "<android.support.constraint.ConstraintLayout\n" +
                        "    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n" +
                        "    xmlns:tools=\"http://schemas.android.com/tools\"\n" +
                        "    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n" +
                        "    android:id=\"@+id/activity_main\"\n" +
                        "    android:layout_width=\"match_parent\"\n" +
                        "    android:layout_height=\"match_parent\"\n" +
                        "    tools:context=\"com.libin.multi.tools.MainActivity\">\n" +
                        "\n" +
                        "    <TextView\n" +
                        "        android:layout_width=\"wrap_content\"\n" +
                        "        android:layout_height=\"wrap_content\"\n" +
                        "        android:text=\"Hello World!\"\n" +
                        "        app:layout_constraintBottom_toBottomOf=\"@+id/activity_main\"\n" +
                        "        app:layout_constraintLeft_toLeftOf=\"@+id/activity_main\"\n" +
                        "        app:layout_constraintRight_toRightOf=\"@+id/activity_main\"\n" +
                        "        app:layout_constraintTop_toTopOf=\"@+id/activity_main\" />\n" +
                        "    \n" +
                        "    <ImageView\n" +
                        "        android:layout_width=\"wrap_content\"\n" +
                        "        android:layout_height=\"wrap_content\" />\n" +
                        "    \n" +
                        "    <TextView\n" +
                        "        android:layout_width=\"wrap_content\"\n" +
                        "        android:layout_height=\"wrap_content\" />\n" +
                        "\n" +
                        "</android.support.constraint.ConstraintLayout>\n");
          
          

          这里写图片描述


          new Thread(new Runnable() {
                      @Override
                      public void run() {
                          Logger.e("Thread");
                      }
                  }).start();
          
            
            

            这里写图片描述


            原文链接:http://blog.csdn.net/github_33304260/article/details/54799169

            Logo

            开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

            更多推荐