我无法创建我的类的实例,因为不知道如何在 log4j.xml 的 createAppender 方法中传递所需的参数。例外:ru.appliedtech.desktopapp.client.ui.menu.JTextAreaAppender 中构造函数的参数 0 需要找不到类型为“java.lang.String”的 bean。考虑在您的配置中定义类型为“java.lang.String”的 bean。@Plugin(name = "JTextAreaAppender", category = "Core", elementType = "appender", printObject = true)@Configuration@ComponentScan("ru.appliedtech")public class JTextAreaAppender extends AbstractAppender{ private int maxLines = 0; private static volatile ArrayList<JTextArea> jTextAreaList = new ArrayList<>(); protected JTextAreaAppender(String name, Filter filter, Layout<? extends Serializable> layout, boolean ignoreExceptions, Property[] properties) { super(name, filter, layout, ignoreExceptions, properties); } @PluginFactory public static JTextAreaAppender createAppender(@PluginAttribute("name") String name, @PluginAttribute("ignoreExceptions") boolean ignoreExceptions, @PluginElement("Layout") Layout<?> layout, @PluginElement("Filters") Filter filter, @PluginElement("Properties") Property[] properties) { return new JTextAreaAppender(name, filter, layout, ignoreExceptions, properties); } /** * add the target JTextArea to be populated and updated by the logging information * @param textArea text area */ public static void addTextArea(final JTextArea textArea) { JTextAreaAppender.jTextAreaList.add(textArea); } @Override public void append(LogEvent event) { // }}log4j.xml<?xml version="1.0" encoding="UTF-8"?><Configuration status="ERROR" packages="ru.appliedtech.desktopapp.client.ui.menu"> <Properties> <Property name="APP_LOG_ROOT">ru.appliedtech</Property> </Properties>
2 回答
holdtom
TA贡献1805条经验 获得超10个赞
rgoers 是对的,您的 Log4j 插件类上有 Spring 注释很奇怪。 @Configuration
不@ComponentScan
应该在那里。先把那些去掉。顺便说一下,有时(在调试 log4j2 配置时)将状态设置为DEBUG
like很有用
<Configuration status="ERROR"
如果您的插件未被识别,可能是您没有进行注释处理。如果您使用的是 Gradle,请务必添加log4j-core
为annotationProcessor
依赖项。
annotationProcessor 'org.apache.logging.log4j:log4j-core'
如果您使用的是 IntelliJ,请务必在 Preferences -> Build,Execution, Deployment -> Compiler -> Annotation Processors -> Enable annotation processing 中启用 Annotation processing。
如果没问题,Log4J 应该会检测到您的 Appender 插件,这是本问题的主题。
添加回答
举报
0/150
提交
取消