一般用途

概览
图书馆为Android,iOS和React Industrial提供通用记录和报告设施.
动机
虽然Android和iOS有许多不同的记录系统,但它们大多面向开发者,只执行单项任务:记录. 有的过于简单(timber),有的过于复杂(logs4j),无一提供用户/QA面对的特性:轻松的外置配置,UI.
X-Ray图书馆的设计目标如下:
- 为Android,iOS,以及React Industrial伐木提供滴入解决方案.
- 模块化,因此许多组件可以用作独立的,或者与其他伐木解决方案结合.
- 为开发者报告信息提供方便的语法和基础设施.
- 提供随时可用UI组件进行日志配置、显示和报告.
- 提供与应用诊断和见解相关的额外功能:崩溃报告,日志共享.
- 易于扩展和定制.
- 继承其他伐木系统的最佳做法,包括: 蟒, C # (韩语) 赛里洛等 (中文(简体) ).
特征 :
- 自定义汇,如Serilog:亚行,文件等.
- 弹性过滤
- 扩展: 崩溃报告,通知控制
- 带有 Moshi 的深对象堆放支持
Android 设置
在最小配置中,只需要核心. 它包含所有需要的日志接口,过滤规则和基本汇.
与图书馆的联系
项目可以通过下列方式连接:
- 利用出土文物:
马文文物是当地安卓应用的推荐方式.
将以下寄存器添加到您的工程顶级格勒
maven { url 'https://dl.bintray.com/applicaster-ltd/maven_plugins' }
连接核心 :
implementation('com.applicaster:xray-core:0.0.4-alpha')
可选链接扩展需要 :
implementation('com.applicaster:xray-crashreporter:0.0.4-alpha')
- 从 npm 仓库
国家防范机制一揽子计划包括源代码形式的项目。 反应-原生项目方便度.
- 作为git子模块
用于开发者在新扩展或扩展库本身的工作.
Android 初始化和基本用途
初始化并附加汇.
val fileLogSink = PackageFileLogSink(this, "default.log");
Core.get()
.addSink("adb", ADBSink())
.addSink("file", fileLogSink)
可选地配置崩溃报告扩展
Reporting.init("[email protected]", fileLogSink.file)
Reporting.enableForCurrentThread(this, true)
开始记录 :
val rootLogger = Logger.get()
rootLogger
.d("Test")
.message("Basic message")
从某个子系统的某个特定组件登录 :
val logger = Logger.get("subsystem/component")
logger
.d("Test")
.message("Basic message")
高级过滤配置
从任何日志器输出到任何汇都可以被过滤. 默认过滤器执行允许通过日志级别过滤.
在这里, 我们只允许错误消息传递到第二个文件槽 error_log_sink数字 :
Core.get()
.addSink("default_log_sink", fileLogSink)
.addSink("error_log_sink", errorFileLogSink)
.setFilter("error_log_sink", "", DefaultSinkFilter(LogLevel.error))
在每次应用程序启动时重制出动词日志级别日志文件,或按要求启用以避免占用过多的空间,同时保留或旋转错误日志文件时,可以使用此功能.
过滤可以为特定的子系统及其后人所压倒.
在这里,我们允许所有消息从 childLogger 及其子孙传入第二个文件槽:
Core.get()
.setFilter("error_log_sink", "childLogger", DefaultSinkFilter(LogLevel.debug))
请参看 ./docs/adr/003-下沉-过滤器.md 关于过滤方法的更详细信息.
建筑和部署
项目可以同时发布给npm和maven. 马文出版由CI完成,但可以手动进行. 请参考 .circleci/config.yml 页面存档备份,存于互联网档案馆 用于出版步骤.
npm 发布
稳定释放(基于承诺)
- 合并更改为
master。 。 。 . deploy_npm运行node ./scripts/publish_npm.js并计算自上次发布以来承诺消息的释放出错.- 脚本更新
package.json版本,发布到 npm (latest),然后创造并推进:- 承诺:
chore: publish @applicaster/x-ray@<version> - 标签 :
<version>
- 承诺:
加那利释放(PR分支)
合并前的测试更改 :
- 打开拉动请求( 除
master) (中文(简体) ). - 等着
build任务要完成. - 手动批准
hold_create_canary在圆环CI. deploy_npm_canary运行node ./scripts/publish_npm.js --canary——与"扎普-框架"相同的规则scripts/publish_plugins.js --canary数字 :BREAKING CHANGE自上次公布以来 主要feat犯罪(例如:.feat: …页:1 小声- 任何其他罪行(
chore, (中文(简体) ),fix页:1 补丁 - 版本基础是最新的 git 标记( 或
package.json(如果更高) (中文(简体) ). - 加那利语版本: 如果 npm
next与起伏版本相提并论next(例如:.0.7.2-alpha.0→0.7.2-alpha.1页:1${bumpedVersion}-alpha.0。 。 。 . - 发布到
nextditt-tag( 秒数) (npm view versions避免重复版本; 在登记册处理时重复409次).
当地金丝雀出版社(NPM_TOKEN 所需:
yarn install
yarn publish:canary
用于 Maven 出版的艺术版本必须匹配 releaseVersion 常数在 android/gradle/constants.gradle。 。 。 .
注意xray 组件对扩展的依赖性是使用特殊帮助函数导入的 xrayAPI,例如:
xrayAPI(dependencies, ':xray-core')
这种帮助者动态地解决对项目或出土文物的依赖性,并在项目中存储依赖性信息. 存储的依赖性信息后来被maven出版脚本用于构建POM文件. 这种方法可以避免依赖性解析失败,因为在出版过程中,扩展依赖于仅待出版的文物.
要执行 :
- 日志中动态上下文提供者( 线等)
- 映射器配置
- 使用 Dummy 事件构建器, 如果日志事件不会被记录以保存性能
- 带有时间、标签等占位符的事件格式化器
- 模板中命名的占位符( WIP)
- 内循环缓冲事件槽
- 可能输出文件汇到缓存而不是数据存储, 这样用户就可以在不丢失数据的情况下擦拭它
- Trim/旋转文件汇
- HTTP 服务器槽
问题:
- 使用特定 Android 无效说明
- 内部使用 Kotlin