【问题标题】:(Java SE/Android) cross platform logging(Java SE/Android) 跨平台日志记录
【发布时间】:2012-10-14 00:58:33
【问题描述】:

我希望我正在开发的这个库支持日志记录,但 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 方法。让开发人员处理日志而不是库本身是个好主意吗?似乎是迄今为止最好的解决方案,如果我记录得很好,那么它应该不是问题。

【问题讨论】:

    标签: java android logging


    【解决方案1】:

    你可以试试微日志

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

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

    【讨论】:

    • 感谢您的回复。我不认为我会使用单独的日志库,因为我没有记录很多数据。我想我会采用我的解决方案,因为我已经对其进行了测试并且效果很好。另外,它将允许用户处理您提到的日志库的日志。
    【解决方案2】:

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

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

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

    我会使用 logback 作为 J2SE 应用程序的后端,使用 logback-android 作为 Android 应用程序的后端。

    【讨论】:

    • 感谢您解释slf4j 日志库。我希望我可以编辑我之前关于不使用它们的其他评论。第一次使用,所以我会试一试!
    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多