Android强大log框架Logger使用详解

Posted 先知丨先觉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android强大log框架Logger使用详解相关的知识,希望对你有一定的参考价值。

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. 配置初始化选项(非必须选项,不配置的情况下会使用系统默认的初始化配置
 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);

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

扫码关注公众号“伟大程序猿的诞生“,更多干货新鲜文章等着你~

公众号回复“资料获取”,获取更多干货哦~

有问题添加本人微信号“fenghuokeji996” 或扫描博客导航栏本人二维码

以上是关于Android强大log框架Logger使用详解的主要内容,如果未能解决你的问题,请参考以下文章

Android日志框架Logger

java.util.logging.Logger使用详解 (转)

log4j框架logger的继承关系以及使用场景

android的日志Logger和Log比较,哪个好?

Java日志框架 -- LOG4J(Log4j入门案例日志级别Log4j组件(LoggersAppendersLayouts)配置文件内置日志记录自定义Logger)

Java日志框架 -- LOG4J(Log4j入门案例日志级别Log4j组件(LoggersAppendersLayouts)配置文件内置日志记录自定义Logger)