【发布时间】:2012-01-11 10:35:31
【问题描述】:
我想你们中的大多数人都知道 android.util.Log 所有日志记录方法都接受“字符串标记”作为第一个参数。
我的问题是您通常如何在应用程序中标记您的日志? 我见过一些像这样的硬代码:
public class MyActivity extends Activity {
private static final String TAG = "MyActivity";
//...
public void method () {
//...
Log.d(TAG, "Some logging");
}
}
这看起来不太好,原因有很多:
- 你可以告诉我这段代码没有硬编码,但它有。
- 我的应用程序可以在不同包中具有任意数量的同名类。所以阅读日志会很困难。
- 它不灵活。您总是将私有字段 TAG 放入您的类中。
有没有什么巧妙的方法来获得一个班级的 TAG?
【问题讨论】:
-
Android javadoc 建议使用 TAG,所以我认为这并不比在运行时获取类名更糟糕
-
我更喜欢创建一个特定的类,比如 GeneralConstants 并将我的标签放在上面,这样我就可以访问我想要的任何类的标签; GeneralConstans.MY_TAG
-
我认为最好在类中定义 TAG,硬编码类名很难看,但使用 proguard 的唯一可靠方法。如果您从不使用 proguard,那么 MyActivity.class.getName() 是最好的解决方案。如果您担心名称重复,只需包含包名称即可。将 TAG 名称放在不同的地方将成为维护的噩梦。