6

我有一个非常大的库,专门开发用于我的 Android 应用程序。然而,业务逻辑本身不依赖于 Android。为了保留这一点,我在整个库中使用了 Commons Logging,它是各自的 JUnit 测试(我在 Eclipse 中运行)。

但是,现在我开始将它集成到我在 Android 上启动的 Activity 中,我无法让我的日志记录工作。在 Eclipse/JUnit 中,我只是拉入了 log4j 的 jar 文件以及 log4j.properties 文件。部署到设备时,这似乎不起作用。在努力尝试让它工作几个小时后,我放弃并尝试用 android.util.Log 替换我所有的公共日志记录内容。现在我可以登录设备了。但是所有的 JUnit 测试都被破坏了。当任何 JUnit 尝试使用 android.util.Log 进行日志记录时,它会抛出 RuntimeException 'Stub!'。

我宁愿恢复到我的公共日志记录方法..如果有人可以提供帮助..否则..我该怎么做才能让我的 JUnit 测试用例使用'android.util.Log'运行?

非常感谢..我已经花了几个小时在这上面,我想继续编写真正的代码!

4

5 回答 5

5

正如 Qberticus 所提到的,commons-logging 将在 Android 中运行。我刚刚通过将 commons-logging 库放入 Android 项目并在 INFO 级别记录消息来确认这一点。Commons-logging 将默认使用 Jdk14 日志框架,然后将传递到 Android Logging 子系统,结果可在 logcat 中查看。该标签设置为使用其日志的类:例如,使用来自的日志LogFactory.getLog(Foo.class)将具有标签“Foo”。

于 2011-04-09T14:34:39.243 回答
4

我不相信 android atm 有 log4j 端口。但是,android 确实内置了 java.util.logging,并且 commons logging 可以通过Jdk14Logger. 如果公共日志记录适用于 android,那么您可能会很高兴。

于 2010-06-17T05:50:28.153 回答
1

您可以为自己的记录器构建一个接口,该接口根据平台实例化平台上常见的日志记录的委托。只要您正在工作和调试,这就足够了,稍后在设备上的生产代码中,您可以简单地插入一个什么都不做的记录器,这样您就可以节省所有需要弄乱电话日志的时间。

于 2010-06-17T07:55:02.870 回答
1

保罗的解决方案对我不起作用。它导致编译时发生冲突,因为碰巧的是,公共日志记录 jar 已包含在 SDK 中。我的麻烦是我无法针对它进行编译。

添加:

extensible.classpath=${sdk.dir}/tools/lib/commons-logging-1.1.1.jar

我的 ant.properties 成功了。

于 2012-01-31T14:25:23.747 回答
0

有一个新项目,可以在 android 上启用 log4j。在 slf4j 上使用 log4j 是可能的。它还为 LogCat 提供了一个附加程序。在 android 中查看项目android-logging-log4jlog4j 支持

于 2011-11-20T07:53:30.423 回答