- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
作为我工作的一部分,我正在创建 log4j2 与我们公司自己的自定义日志记录服务的简单集成。为此,我创建了两个类:ECSAppender 和 ECSLog。
ECSLog 是一个简单的类,其属性用于标准化每个日志的内容。XXXAppender是一个Appender,它将日志发送到我们公司的Web服务,将日志集中在一处。
我已经完成了产品并在同一个项目中对其进行了测试,并且运行良好。但是,当我尝试将类打包到 jar 中并将其导入到另一个项目中(这就是我们要求开发人员执行的操作)时,log4j2 无法找到 jar 中定义的类。我知道程序正在识别这些类,因为我能够调用并运行 ECSLog 类的方法(简单的打印)。
要使 jar 中的 Appender 能够被 log4j2 识别,需要进行哪些配置?
我尝试过:通过 java cvf、maven clean package 创建一个 jar,并进入 jar 并编辑 MANIFEST 以包含“Multi-Release:true”。
这些选项都不会使该类对 log4j2 可见。
日志类和 Appender 工作正常。我的 log4j2.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG" packages="ECSLogging">
<Appenders>
<ECSAppender name="ECSAppender">
<PatternLayout>
<pattern>%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</pattern>
</PatternLayout>
</ECSAppender>
</Appenders>
<Loggers>
<AsyncLogger name="ECSLogger" level="DEBUG" includeLocation="true">
<AppenderRef ref="ECSAppender"/>
</AsyncLogger>
</Loggers>
</Configuration>
我遇到的错误:
2019-11-12 09:32:26,423 ERROR Error processing element ECSAppender: CLASS_NOT_FOUND
我希望 log4j2 能够识别我构建的附加程序,即使它位于 jar 中。
最佳答案
感谢@ptomli 的帮助。原来我打包的 .jar 错误。我采取的解决步骤:1. 选择项目 A(正在运行的项目)并删除包含 main 方法的包。2. 使用 mvn clean package 生成该新项目的 jar。3. 将该 jar 导入到项目 B 中。
关于java - 处理元素 XXX 时出错 : CLASS_NOT_FOUND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58821105/
作为我工作的一部分,我正在创建 log4j2 与我们公司自己的自定义日志记录服务的简单集成。为此,我创建了两个类:ECSAppender 和 ECSLog。 ECSLog 是一个简单的类,其属性用于标
我们无法使用 log4j2 让 Flumeappender 工作。但是,使用 log4j.properties 配置文件,而不是通过 log4j2.xml。我们得到的错误是:错误处理元素Flume:C
我是一名优秀的程序员,十分优秀!