5

我希望我正在开发的这个库支持日志记录,但 Android 和 SE 有自己的日志记录方式。在 SE 中,您可以使用System.out.println方法或java.util.logging.Logger类。Android 用于android.util.Log登录 logcat。一开始我用反射来检查android是否可用,然后反射性地调用日志中的方法Log.class;但这不是一个好主意。

我的解决方案是让使用我的库的开发人员自己处理日志。他们会设置一个 Handler 接口,并有一个 onLog 方法

public void onLog(int level, String tag, String msg);

该库将在我的自定义 Logger 类中的处理程序上调用 onLog 方法。让开发人员处理日志而不是库本身是个好主意吗?似乎是迄今为止最好的解决方案,如果我把它记录好,那么它应该不是问题。

4

2 回答 2

2

我同意你的观点,日志记录应该委托给客户,你的本土方法确实是明智的。

IMO,SLF4J外观将非常适合您的情况。您的库将包含slf4j-apijar 并包含 SLF4J 日志记录语句。如果客户想要日志记录,他们只需将日志记录后端(和一个可选的配置文件)放入其应用程序的类路径中即可捕获/查看您的日志语句。

这种方法的优点是它为客户提供了获取日志所需的零编码的最大控制权;并且它允许客户端在许多可用的后端中进行选择。

我将logback用作 J2SE 应用程序和logback-androidAndroid 的后端。

于 2012-10-25T00:33:34.043 回答
1

你可以试试微博

http://code.google.com/p/microlog4android/

它可以帮助您在 android 和 java 之间使用一致的日志记录机制。如果您使用 slf4j,它可以用作 microlog(对于您的 android 项目)和 log4j(对于您的 java 项目)的包装器

于 2012-10-24T05:09:55.263 回答