移动应用 活跃维护

logger

orhanobut/logger

✔️ 简单、漂亮且强大的 Android 日志工具

13830
Stars 标星
2120
Forks 分支
369
Watchers 关注
81
Open Issues
Kotlin
主要语言
Apache-2.0
开源协议
1.9 MB
仓库大小
16 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:orhanobut/logger
git clone https://github.com/orhanobut/logger.git
git clone git@github.com:orhanobut/logger.git
README.md master

英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。

记录器

适用于 Android 的可读、结构化日志。将消息、集合、JSON 和 XML 转换为易于在 Logcat 中扫描的输出。

  • 漂亮的输出,可选择显示线程和调用者信息
  • JSON 和 XML 格式化
  • 可读的列表、映射和数组
  • 自定义标签和日志过滤
  • 异常堆栈跟踪
  • 灵活的目标,包括 Logcat 和文件

设置

将 Google Maven 和 Maven Central 添加到你的依赖仓库:

dependencyResolutionManagement {
  repositories {
    google()
    mavenCentral()
  }
}
dependencies {
  implementation("com.orhanobut:logger:2.2.0")
}

在您的应用程序中初始化一次,然后记录:

Logger.addLogAdapter(AndroidLogAdapter())
Logger.d("hello %s", "world")

消息

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(listOf("foo", "bar"))
Logger.d(mapOf("key" to "value"))
Logger.d(intArrayOf(1, 2, 3))
Logger.json("""{"items":[1,2,3]}""")
Logger.xml("<root><item>value</item></root>")

收集和结构化输出使用调试优先级。使用 Logger.e(throwable, "message") 包含异常及其原因。

在调用线程上为恰好一条消息设置标签:

Logger.t("Checkout").d("Order submitted")

格式化和过滤

val format = PrettyFormatStrategy.newBuilder()
  .showThreadInfo(false) // Default: true
  .methodCount(0)        // Default: 2 caller frames
  .methodOffset(0)       // Default: 0 additional frames skipped
  .tag("MyApp")          // Default: PRETTY_LOGGER
  .build()

Logger.addLogAdapter(object : AndroidLogAdapter(format) {
  override fun isLoggable(priority: Int, tag: String?): Boolean = BuildConfig.DEBUG
})

Logger.t("Screen").d("A message tagged MyApp-Screen")

重写 LogAdapter.isLoggable 以按优先级或标签过滤信息。上面的示例仅在调试构建中启用日志记录。在替换已配置的适配器之前,使用 Logger.clearLogAdapters()。

对于 Logcat 过滤,请使用 PRETTY_LOGGER 或您配置的标签。

文件记录

使用 CsvFormatStrategy 和自定义的 DiskLogStrategy 将格式化日志保存到应用私有存储。示例 sample 展示了完整的设置,包括后台写入和清理。应用私有存储无需存储权限。

默认的 DiskLogAdapter() 仍然使用传统的共享外部存储位置。现代 Android 通过分区存储限制了该位置;对于当前应用,请使用示例中的自定义策略。

Timber 集成

Timber.plant(object : Timber.DebugTree() {
  override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
    Logger.log(priority, tag, message, t)
  }
})

许可证

Apache 许可证 2.0

本站来源与版权声明
  • 本文标题:logger - ✔️ 简单
  • 本文链接:https://cn121.com/mobile/orhanobut-logger.html
  • 原项目:orhanobut/logger 版权归原作者 orhanobut 及贡献者所有
  • 收录信息:本站于 2026-10-20 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 Apache-2.0(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。本站对原文仅作排版与图片地址适配, 并保留原项目的 NOTICE 与署名要求。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 orhanobut/logger。
  • 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。