- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我听说了 Timber正在阅读 github README
,但它悄悄地让我感到困惑。
Behavior is added through Tree instances. You can install an instance by calling Timber.plant. Installation of Trees should be done as early as possible. The onCreate of your application is the most logical choice.
什么行为?
This is a logger with a small, extensible API which provides utility on top of Android's normal Log class.
除了 Android 的 Log 之外,它还提供了什么?
The DebugTree implementation will automatically figure out from which class it's being called and use that class name as its tag. Since the tags vary, it works really well when coupled with a log reader like Pidcat.
什么是调试树?
There are no Tree implementations installed by default because every time you log in production, a puppy dies.
同样,什么是树实现?它有什么作用?我该如何停止杀死小狗?
Two easy steps:
Install any Tree instances you want in the onCreate of your application class.
Call Timber's static methods everywhere throughout your app.
完成什么的两个简单步骤?
这些都没有在自述文件中解释。对于已经知道它是什么的人来说,这几乎是一个描述:/
最佳答案
问题:-
我们不想在已签名的应用程序中打印日志,因为我们有时可能会记录敏感信息。通常为了克服这个问题,开发人员倾向于在写日志之前写 if 条件
例子:-
if(BuildConfig.DEBUG) {
Log.d(TAG,userName);
}
所以每次你想打印日志你需要写一个if条件和一个TAG,大多数时候都是类名
木材解决了这两个问题
您只需要在应用程序类中检查一次条件并初始化 Timber.plant
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
if (BuildConfig.DEBUG) {
Timber.plant(DebugTree())
}
}
}
剩下的所有地方我们可以只写 Timber.d("Message")
没有任何标签或 if 条件。
如果你想要一个不同的标签,那么你可以使用
Timber.tag("Tag").d("message");
编辑:
您还可以在 Timber 中种植自己的树,并做一些很酷的事情,例如在发布时仅记录警告和错误,将警告和错误日志发送到服务器等。例如
import timber.log.Timber;
public class ReleaseTree extends Timber.Tree {
@Override
protected void log(int priority, String tag, String message, Throwable t) {
if (priority == ERROR || priority == WARNING){
//Send to server
}
}
}
您可以为不同的构建风格种植不同的树。
关于android - Timber 库到底是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53912618/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!