• 日志框架之Logger



    概述

    在我们日常的开发中,肯定是少不了要和 Log 打交道,回想一下我们是怎么使用 Log 的:先定义一个静态常量 TAG,TAG 的值通常是当前类的类名,然后在需要打印 Log 的地方,调用 Log.d(TAG, "要打印的内容")。每次新写一个类,都要写一个 TAG,这也就算了,最苦逼的是,项目一上线,还要手动去把每个 Log 注释掉。。。

    当然,有的同学可能要说,这又没什么,自己封装一个 Log 不就行了。但是对新手来说,自己封装有一定的难度,如果有现成的开源库可以直接拿来用就好了。


    功能

    线程的信息
    类的信息
    方法的信息
    将 JSON 文本人性化输出
    将换行符人性化输出
    简洁的输出
    从日志跳转到源码


    使用

    1.导入依赖

    compile 'com.orhanobut:logger:1.15'
    

    2.使用

    Logger.d("执行了 onCreate");
    Logger.json(JSON_CONTENT);
    Logger.xml(XML_CONTENT);Logger.d(list);
    Logger.d(map); Logger.d(set);
    Logger.d("hello %s %d", "world", 5);
    

    自定义 TAG如果你不满意默认的TAG

    也可以自己定义一个 TAG,只需要调用一次 Logger.init() 就行了。因为只需要调用一次,所以可以在 Application 中来完成 Logger 的初始化。新建 MyApplication 继承 Application,代码如下:

    public class MyApplication extends Application {
      private static String TAG = "LoggerTest";
      @Override
      public void onCreate() {
        super.onCreate();
        Logger.init(TAG);
      }
    }
    

    修改 AndroidManifest.xml 中 application 的属性,添加 android:name=".MyApplication" ,AndroidManifest.xml 代码如下:这样 App 启动时,初始化的就是我们自定义的 MyApplication 了。然后我们在 MainActivity 的 onCreate() 中打印一下日志,看下自定义的 TAG 生效了没。可以看到,我们自定义的 TAG 已经生效了。那么有的同学可能会有疑问了,我要是不想一直用这个 TAG 呢,要是临时想换个 TAG 用呢,当然也是有办法的,调用 Logger.t("临时TAG名").d() ,就能使用临时的 TAG 打印日志了。可以看到,临时的 TAG 名被追加到自定义 TAG 的后面了。


    设置不打印日志
    之前说了,日志只是开发的时候需要用到,等到项目上线就不能用了。Logger 当然也考虑到了这一点,通过设置 Logger.init(TAG).logLevel(LogLevel.NONE) 可以设置为不打印日志。logLevel() 方法默认的参数是 LogLevel.FULL,也就是打印全部日志。修改 MyApplication 的 onCreate() 方法:

    @Override
    public void onCreate() {
      super.onCreate();
      Logger.init(TAG).logLevel(LogLevel.NONE);
    }
    

    打印 Exception
    Logger 打印 Exception,可以很清晰的看到 Exception 信息,这里我们写一个数组越界异常:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        int[] a = new int[3];
        try {
            a[4] = 3;
        } catch (Exception e) {
            Logger.e(e, "message");
        }
    }
    

    个性化设置

    Logger.init(TAG)
            .methodCount(3) // 方法栈打印的个数,默认是 2
            .hideThreadInfo() // // 隐藏线程信息,默认显示
            .methodOffset(2) // 设置调用堆栈的函数偏移值,默认是 0
            .logAdapter(new AndroidLogAdapter()); // 自定义一个打印适配器
    
  • 相关阅读:
    CSS 中 Position relative 和 absolute区别
    感受到LDT的好处
    Map数据结构
    break和continue
    vue的ref属性
    css小样式
    搭建vue开发环境
    setTimeout和clearTimeout
    垂直居中
    vertical-align 属性
  • 原文地址:https://www.cnblogs.com/loaderman/p/6446055.html
Copyright © 2020-2023  润新知