登录Android应用程序的“Java Library Code”库

时间:2011-02-15 09:46:51

标签: java android logging

我按照advice在单独的“Java库代码”项目中为我的Android应用程序实现Android设备(不是应用程序!)独立库代码。这使我更容易进行测试,因为我可以像以前那样使用标准的maven项目布局,Spring测试支持和Continuous Build系统。我不想在我的Android App项目中混合使用它,尽管这可能是可能的。

我现在想知道如何在这个库中实现日志记录。由于此库将在Android设备上使用,我希望使用android.util.Log。我将followind依赖项添加到我的项目中以获取缺少的Android包/类和依赖项:

<dependency>
    <groupId>com.google.android</groupId>
    <artifactId>android</artifactId>
    <version>2.2.1</version>
    <scope>provided</scope>
</dependency>

但是这个库只包含stub方法(类似于android-sdk中的android.jar),因此使用android.util.Log结果

java.lang.RuntimeException: Stub!

运行我的单元测试时。如何实现在Android设备上运行但不会在外部失败的日志记录(我不希望它能够正常工作,但它一定不会失败)?

感谢您的任何建议   克劳斯


目前我正在使用解决方法来捕获android之外的异常,但希望有更好的解决方案。

try {
    Log.d("me", "hello");
} catch (RuntimeException re) {
    // ignore failure outside android
}

3 个答案:

答案 0 :(得分:8)

来自GrepCode(12)的这两个链接似乎暗示android上的java.util.Logging的默认处理程序委托给android.util.Log,所以在你的库中你应该只能使用java.util.logging apis。

我找不到任何有关此行为的进一步文档

答案 1 :(得分:1)

您可以使用以下代码段:

java.util.logging.Logger.getLogger("SOME_TAG").log(Level.INFO, "log message")

它在android logger中看起来像这样:

2019-03-12 14:14:20.143 31195-32138/your.package.name I/SOME_TAG: log message

答案 2 :(得分:0)

这无处不在:

java.util.logging.Logger.getLogger("YOUR_TAG").log(java.util.logging.Level.INFO, "message");