java - 从 Android 项目中使用的 JAR 进行日志记录
问题描述
我创建了一个用于 android 项目的 java 库。因为我需要我的 jar 来生成日志语句,所以我选择了 log4j 实现,它在我的项目中运行良好。但是当项目被归档并在android项目中使用时,它会抛出以下错误:
Caused by: java.lang.ClassNotFoundException: Didn't find class "java.beans.Introspector" on path: DexPathList[[zip file "/data/app/com.heb.paxpayapp-yDktv3EaH6Ky6U6ANLZU3A==/base.apk"],nativeLibraryDirectories=[/data/app/com.heb.paxpayapp-yDktv3EaH6Ky6U6ANLZU3A==/lib/x86_64, /system/lib64, /vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at org.apache.log4j.config.PropertySetter.setProperty(PropertySetter.java:155)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:130)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:97)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:684)
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:647)
at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:544)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:440)
at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:367)
at com.heb.driver.PaymentDriver.<init>(PaymentDriver.java:93)
这是因为下面的代码:
Properties props = new Properties();
props.load(getClass().getResourceAsStream("/resources/log4j.properties"));
PropertyConfigurator.configure(props);
- 在这种情况下应该使用什么日志框架和依赖项?
- 由于 bean 依赖,看到 PropertyConfigurator.configure(props) 在 Android 中不起作用。什么是加载 log4j 属性的替代解决方案。我应该为 SimpleLayout、FileAppenders 创建 java 配置以动态加载 log4j 属性吗?
请分享你的想法。任何示例都会非常有帮助。
解决方案
只需在代码本身中编写记录器配置,并暂时将其初始化为静态块。我将把它移到一个不同的项目中,将它作为一个不同的日志库。
推荐阅读
- visual-studio - 代码编辑器中的 Visual Studio 自定义语法高亮显示(用于 markdown 和 Hugo)
- javascript - Firestore 如何用作队列?
- javascript - 角度打字稿将日期分配给 DateConstructor
- javascript - 如何验证在 Laravel 上至少选中了 1 个复选框
- excel - VBA Excel:复制单元格而不覆盖
- azure-devops - 如何将管道从可视化设计器移植到 YAML 管道?解析块映射时,没有找到预期的键
- iis - 无法在 IIS 中成功启动经典 ASP 应用程序
- javascript - 有没有办法在不滚动到顶部的情况下更新数据?
- java - 使用每个节点到达端点的寻路算法
- docker - 如何在容器内引用非 docker IP 地址?