05
2017
10

Android开源日志库Logger的使用

Android开源日志库Logger的使用

前言

2017/10/4 19:23:03
自尊,自律,自强,自爱。–Power
本文主要介绍项目里使用到的第三方日志库Logger,本文借鉴了like_program的博文,
http://blog.csdn.net/like_program/article/details/52986553,现在的Logger已经更新到2.1.1了,以下会简单介绍它的使用。
Logger的GitHub地址:https://github.com/orhanobut/logger

正文

1.Logger介绍

简单来说,Logger的出现简化了我们开发过程中打印Log的繁琐,源于他的过滤,使的打印的日志更加清晰明了,可读性高。
Logger提供以下功能:
- 线程的信息
- 类的信息
- 方法的信息
- 将 JSON 文本人性化输出
- 将换行符人性化输出
- 简洁的输出
- 从日志跳转到源码

原生Log打印日志:

Logger打印日志:

通过两张图的对比,我们可以更直观的感受到Logger的人性化,以及给我们带来的极简效果,而且使用也及其简单。

2.Logger的使用

1. 导入依赖
dependencies { compile 'com.orhanobut:logger:2.1.1' }
2. 初始化操作
Logger.addLogAdapter(new AndroidLogAdapter());

在项目的Application里面进行初始化操作,当然如果你要自定义,Logger也提供了方法

FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
  .showThreadInfo(false)  //(可选)是否显示线程信息。 默认值为true
  .methodCount(2)         // (可选)要显示的方法行数。 默认2
  .methodOffset(7)        // (可选)隐藏内部方法调用到偏移量。 默认5
  .logStrategy(customLog) //(可选)更改要打印的日志策略。 默认LogCat
  .tag("POWER")   //(可选)每个日志的全局标记。 默认PRETTY_LOGGER
  .build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));

切记,不要忘了在AndroidManifest.xml中声明

<application  android:name=".MyApplication" //这里进行声明 android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
</application>
3. 简单使用
Logger.d("debug");
Logger.e("error");
Logger.w("warning");
Logger.v("verbose");
Logger.i("information");
Logger.wtf("wtf!!!!");

到这里,我们可以发现,我们再也不用定静态常量TAG了,我觉得这是最爽的!不过后面还有…我们来看一下打印:



4. 打印更多数据类型

以下会用到like_program博文里的引用

  • 打印Json数据‘
private String JSON_CONTENT = "{\"weatherinfo\":{\"city\":\"北京\",\"cityid\":\"101010100\"," +
            "\"temp\":\"18\",\"WD\":\"东南风\",\"WS\":\"1级\",\"SD\":\"17%\",\"WSE\":\"1\"," +
            "\"time\":\"17:05\",\"isRadar\":\"1\",\"Radar\":\"JC_RADAR_AZ9010_JB\"," +
            "\"njd\":\"暂无实况\",\"qy\":\"1011\",\"rain\":\"0\"}}";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Logger.json(JSON_CONTENT);
}


- 打印xml数据

private String XML_CONTENT = "<china dn=\"nay\"><city quName=\"黑龙江\" pyName=\"heilongjiang\" " +
            "cityname=\"哈尔滨\" state1=\"1\" state2=\"1\" stateDetailed=\"多云\"/><city quName=\"吉林\"" +
            " pyName=\"jilin\" " +
            "cityname=\"长春\" state1=\"0\" state2=\"0\" stateDetailed=\"\"/><city quName=\"辽宁\" " +
            "pyName=\"liaoning\" " +
            "cityname=\"沈阳\" state1=\"1\" state2=\"0\" stateDetailed=\"多云转晴\"/><city " +
            "quName=\"海南\" pyName=\"hainan\" " +
            "cityname=\"海口\" state1=\"22\" state2=\"21\" stateDetailed=\"中到大雨转小到中雨\"/></china>";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Logger.xml(XML_CONTENT);
}


- 打印List数据

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // List 类型数据
    List<String> list = new ArrayList<>();
    list.add("hello");
    list.add("world");
    Logger.d(list);
}


- 打印Map数据

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Map 类型数据
    Map<String, String> map = new HashMap<>();
    map.put("key_hello", "hello");
    map.put("key_world", "world");
    Logger.d(map);
}


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

5. 隐藏日志

项目上线前,可以实现以下方法,以保证上线后不输出日志。

Logger.addLogAdapter(new AndroidLogAdapter() {
  @Override public boolean isLoggable(int priority, String tag) {
    return BuildConfig.DEBUG;
  }
});

6. 将Log日志保存到文件中

此方法用于将日志保存在文件中

Logger.addLogAdapter(new DiskLogAdapter());

如果你想保存指定的TAG,增加以下实现:

FormatStrategy formatStrategy = CsvFormatStrategy.newBuilder()
  .tag("custom")
  .build();

Logger.addLogAdapter(new DiskLogAdapter(formatStrategy));

结语

以上是我对Logger使用的一些总结,有需要的朋友们可以使用,有错误的地方或讲解不详细、遗漏之处,欢迎在评论里指出,共同学习。

上一篇:IONIC打安卓签名包 下一篇:微信公众号支付开发流程与避坑手册-Java篇