Android强大log框架Logger使用详解

2019-01-21 16:22:19 浏览数 (1)

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

什么是logger?

  • 是一个简单,漂亮,强大的Android开源日志工具,代码托管在github上
  • 项目地址 https://github.com/orhanobut/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

如何使用?

添加依赖:

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

默认效果:


代码语言:javascript复制
Logger.init().logLevel(LogLevel.FULL).methodCount(3);

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

效果展示:
代码语言:javascript复制
Logger.v("vvvvvvvv");

代码语言:javascript复制
Logger.d("dddddddd");

代码语言:javascript复制
Logger.e("eeeeeeee");

代码语言:javascript复制
Logger.w("wwwwwwww");

代码语言:javascript复制
Logger.v("vvvvvvvv");

代码语言:javascript复制
Logger.wtf("wtfwtf");

代码语言:javascript复制
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"  
                "}");

代码语言:javascript复制
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        methodA();
    }

    void methodA(){
        methodB();
    }

    void methodB(){ Logger.d("methodB","sas","asdasdasd",1);
    }


代码语言:javascript复制
Logger.xml("<?xml version="1.0" encoding="utf-8"?>n"  
                "<android.support.constraint.ConstraintLayoutn"  
                "    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"  
                "    <TextViewn"  
                "        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"  
                "    <ImageViewn"  
                "        android:layout_width="wrap_content"n"  
                "        android:layout_height="wrap_content" />n"  
                "    n"  
                "    <TextViewn"  
                "        android:layout_width="wrap_content"n"  
                "        android:layout_height="wrap_content" />n"  
                "n"  
                "</android.support.constraint.ConstraintLayout>n");

代码语言:javascript复制
new Thread(new Runnable() {
            @Override
            public void run() {
                Logger.e("Thread");
            }
        }).start();

0 人点赞