Skip to content
Tony Shen edited this page Jan 15, 2020 · 16 revisions

SAF-Kotlin-log

它不仅能够打印出漂亮的日志格式,还支持高度定制日志格式。

它可以在任何使用 Java、Kotlin 开发的 Android 项目中使用。即使在您的项目中只使用 Java,也无需额外添加 Kotlin 的配置。

Feature:

  • 日志框架高度可扩展,提供丰富的接口
  • 支持自定义 Tag,便于过滤
  • 支持多种日志级别
  • 支持显示/关闭当前线程信息
  • 支持自定义 Header,可以用于标识手机、App 等版本信息
  • 提供基于 DSL 的方式配置 L
  • 基于责任链模式来打造对象的打印,将对象打印成json风格,方便阅读。默认支持JSON字符串、Collection、Map、Bundle、Intent、Reference、Throwable、Uri等类型的打印,分别做了特别的格式化处理。
  • 使用 json() 方法打印字符串时,支持超长日志的打印,解决了 Logcat 4K 字符截断的问题。
  • 支持自定义对象的解析处理,将其打印成自己想要的风格。
  • 支持自定义日志格式存储到文件,底层基于 Kotlin Coroutines
  • 支持使用特定的 Printer 进行打印日志
  • 提供日志的打包功能
  • 提供单独的基于 OkHttp 的日志拦截器,能够打印 Request、Response 信息,便于网络接口的调试。

SAF-Kotlin-log 的设计:

下图是 core、file 模块的 uml 类图

  • L:负责初始化日志框架、日志的配置、打印日志的方法、使用日志级别、添加 Printer 等。

  • L+Extension:是 L 的扩展函数。

  • LoggerPrinter:存放日志打印需要的一些常量。

  • Parser:是一个接口,用于将特定的对象进行格式化。

  • Printer:是一个接口,用于打印日志,支持日志输出到 Console、File 等。

  • Formatter:是一个接口,用于格式化日志便于 Printer 进行打印。每一个 Printer 包含一个独立的 Formatter。

  • BaseHandler:是一个抽象类,用于封装责任链中每个处理者具体的处理方式。

换言之,Parser 用于将对象解析成字符串。Printer 用于打印、输出日志。Formatter 用于格式化日志,便于 Printer 使用。 而各个 Handler 继承了 BaseHandler 并实现了 Parser 接口。Handler 的职责是格式化某一种类型的对象,以便于利用 L 的 Printer 进行打印。

Clone this wiki locally