android进阶3step3:Android 常用框架——Logger框架

Log做什么用?

Android研发人员在调试程序的时候,或多或少的会使用log来查看程序运行状态

同时,系统也会通过log提示研发人员,系统需要处理的信息,例如异常,系统警告

程序运行状态(多线程尤为重要)

 Log的级别

  1. Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思;
  2. Log.d的输出颜色是蓝色的,仅输出debug调试的意思;
  3. Log.i的输出为绿色,一般提示性的消息information;
  4. Log.w的输出为橙色,可以看作为warning警告,一般需要我 们注意优化Android代码;
  5. Log.e为红色,可以想到error错误

显示级别 v>d>i>w>e

选择v所有都会出现,选择d会出现本身及以下,选择e只会出现e的信息

 简单、漂亮、功能强大的Logger

  • 线程信息Thread information
  • 类信息Class information
  • 方法信息Method information
  • 漂亮打印的JSON内容Pretty-print for json content
  • 清空输出Clean output
  • 跳转到源代码Jump to source feature

2.打印不同level的Log 

VERBOSE:

Logger.v(String message); // VERBOSE级别,可添加占位符 

DEBUG: 

Logger.d(Object object); // DEBUG级别,打印对象 

Logger.d(String message); // DEBUG级别,可添加占位符 

 INFO:

Logger.i(String message); // INFO级别,可添加占位符 

WARN:

Logger.w(String message); // WARN级别,可添加占位符 

ERROR:

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

为啥使用它?

  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
     

如何使用?——》官方文档

添加依赖:

implementation 'com.orhanobut:logger:2.2.0'

配置初始化选项(非必须选项,不配置的情况下会使用系统默认的初始化配置 ,根据需求增删,最后adapter是必要的

 Logger
  .init("mytag")    //LOG TAG默认是PRETTYLOGGER 
  .methodCount(3)                 // 决定打印多少行(每一行代表一个方法)默认:2
  .hideThreadInfo()               // 隐藏线程信息 默认:显示
  .logLevel(LogLevel.NONE)        // 是否显示Log 默认:LogLevel.FULL(全部显示)
  .methodOffset(2)                // 默认:0
  .logAdapter(new AndroidLogAdapter()); //可以自己构造适配器默认:AndroidLogAdapter
}

效果:

 以下是官方文档的内容:

选项

Logger.d("debug");
Logger.e("error");
Logger.w("warning");
Logger.v("verbose");
Logger.i("information");
Logger.wtf("What a Terrible Failure");

支持字符串格式参数

Logger.d("hello %s", "world");

支持集合(仅适用于调试日志)

Logger.d(MAP);
Logger.d(SET);
Logger.d(LIST);
Logger.d(ARRAY);

Json和Xml支持(输出将处于调试级别)

Logger.json(JSON_CONTENT);
Logger.xml(XML_CONTENT);

Advanced

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

Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));

Loggable

日志适配器通过检查此功能来检查是否应打印日志。如果要禁用/隐藏输出日志,请覆盖isLoggable方法。 true将打印日志消息,false将忽略它。

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

将日志保存到文件中

// TODO:稍后会添加更多信息

Logger.addLogAdapter(new DiskLogAdapter());

将自定义标记添加到Csv格式策略

FormatStrategy formatStrategy = CsvFormatStrategy.newBuilder()
  .tag("custom")
  .build();
  
Logger.addLogAdapter(new DiskLogAdapter(formatStrategy));

这个怎么运作

More

  • 使用过滤器可获得更好的效果。PRETTY_LOGGER或您的自定义标记
  • 确保禁用换行选项
  • 您还可以通过更改设置来简化输出。

  • Timber Integration
// Set methodOffset to 5 in order to hide internal method calls
Timber.plant(new Timber.DebugTree() {
  @Override protected void log(int priority, String tag, String message, Throwable t) {
    Logger.log(priority, tag, message, t);
  }
});

更多内容示例:可参考这些文章  :

android日志框架Logger的详细使用(目前最新版2.1.1)

Android强大log框架Logger使用详解

猜你喜欢

转载自blog.csdn.net/qq_17846019/article/details/84615700
今日推荐