美文网首页Android
Android 开源日志库Logger 2.1.1分析与使用教程

Android 开源日志库Logger 2.1.1分析与使用教程

作者: flemingchen | 来源:发表于2017-07-18 17:56 被阅读373次

    项目地址:https://github.com/orhanobut/logger

    2.0.0的重要更新

    特地提一下,这是今年更新的2.0.0版本,上一次更新还是2015年,目前最新的版本是2.1.1,那现在的Logger发生了怎样的变化呢?

    引入

    compile 'com.orhanobut:logger:2.1.1'
    

    改变之处

    初始化

    之前是初始化Logger是这样的:

    private static final String TAG = "APPLOG";
    @Override
    public void onCreate() {
        super.onCreate();
        Logger.init(TAG);  //初始化需要打印log时,默认是LogLevel.FULL
    //    Logger.init(TAG).logLevel(LogLevel.NONE); //上线后不需要打印log时
    }
    

    而现在是这样的:

    private static final String TAG = "APPLOG";
    @Override
    public void onCreate() {
        super.onCreate();
        initLogger(TAG);
    }
    private void initLogger(String tag) {
        FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
                .tag(tag) // 全局tag
                .build();
        Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy) {
            @Override
            public boolean isLoggable(int priority, String tag) {
                return BuildConfig.DEBUG;
            }
        });
    }
    

    初始化的时候如果使用默认配置,只需要addLogAdapter就可以Logger.addLogAdapter(new AndroidLogAdapter()),当然也可以像上面的代码一样,添加自定义的TAG。

    配置策略

    利用PrettyFormatStrategy.newBuilder还有更高级的设置,如:

    FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
      .showThreadInfo(false)  // 是否显示线程信息,默认 显示
      .methodCount(0)         // 方法栈打印的个数,默认是 2
      .methodOffset(7)        // 设置调用堆栈的函数偏移值,默认是 5
      .logStrategy(customLog) // 设置log打印策略,默认是 LogCat
      .tag("My custom tag")   // 设置全局TAG,默认是 PRETTY_LOGGER
      .build();
    Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy ));
    

    在AndroidLogAdapter中新增isLoggable方法,根据返回的boolean值来控制是否打印log,而这里用的是BuildConfig.DEBUG,即在release版本中就不打印了。

    for (LogAdapter adapter : logAdapters) {
      if (adapter.isLoggable(priority, tag)) {
        adapter.log(priority, tag, message);
      }
    }
    

    保存log

    当log日志是需要保存时,可以调用Logger.addLogAdapter(new DiskLogAdapter()),利用DiskLogStrategy就可以将log日志输出到文件中了,同样也可以添加自定义TAG。

    FormatStrategy formatStrategy = CsvFormatStrategy.newBuilder()
      .tag("custom")
      .build();
    Logger.addLogAdapter(new DiskLogAdapter(formatStrategy));
    
    Logger最新结构分析图

    特性保留

    • Logger.d("debug");
    • Logger.e("error");
    • Logger.w("warning");
    • Logger.v("verbose");
    • Logger.i("information");
    • Logger.wtf("wtf!!!!");
      支持一次性使用的tag
    • Logger.t("tag").d("debug");
      支持打印带参数的字符串
    • Logger.d("hello %s", "world");
      支持打印Collections (仅限debug logs)
    • Logger.d(MAP);
    • Logger.d(SET);
    • Logger.d(LIST);
    • Logger.d(ARRAY);
      支持打印JSON和XML (以debug log展示)
    • Logger.json(JSON_CONTENT);
    • Logger.xml(XML_CONTENT);
    Logger打印的样式

    感悟

    这次的更新让Logger结构更加清晰,功能更加丰富,佩服作者的设计思路和开发技巧,不愧是有那么多star。

    相关文章

      网友评论

      本文标题:Android 开源日志库Logger 2.1.1分析与使用教程

      本文链接:https://www.haomeiwen.com/subject/ffjhkxtx.html