我無法創(chuàng)建我的類的實例,因為不知道如何在 log4j.xml 的 createAppender 方法中傳遞所需的參數(shù)。例外:ru.appliedtech.desktopapp.client.ui.menu.JTextAreaAppender 中構(gòu)造函數(shù)的參數(shù) 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條經(jīng)驗 獲得超10個贊
rgoers 是對的,您的 Log4j 插件類上有 Spring 注釋很奇怪。 @Configuration
不@ComponentScan
應(yīng)該在那里。先把那些去掉。順便說一下,有時(在調(diào)試 log4j2 配置時)將狀態(tài)設(shè)置為DEBUG
like很有用
<Configuration status="ERROR"
如果您的插件未被識別,可能是您沒有進行注釋處理。如果您使用的是 Gradle,請務(wù)必添加log4j-core
為annotationProcessor
依賴項。
annotationProcessor 'org.apache.logging.log4j:log4j-core'
如果您使用的是 IntelliJ,請務(wù)必在 Preferences -> Build,Execution, Deployment -> Compiler -> Annotation Processors -> Enable annotation processing 中啟用 Annotation processing。
如果沒問題,Log4J 應(yīng)該會檢測到您的 Appender 插件,這是本問題的主題。
添加回答
舉報
0/150
提交
取消