gpt4 book ai didi

java - 使用 Spring Boot 创建自定义附加程序以将日志消息输出到文本区域

转载 作者:行者123 更新时间:2023-12-02 01:57:00 25 4
gpt4 key购买 nike

我无法创建类的实例,因为不知道如何从 log4j.xml 的 createAppender 方法中传递所需的参数。

异常(exception):

Parameter 0 of constructor in ru.appliedtech.desktopapp.client.ui.menu.JTextAreaAppender required a bean of type 'java.lang.String' that could not be found. Consider defining a bean of type 'java.lang.String' in your configuration.

@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>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<JTextAreaAppender name="textArea">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss} %msg%n">
</PatternLayout>
</JTextAreaAppender>
</Appenders>
<Loggers>
<Root level="ERROR">
<AppenderRef ref="console" level="ERROR"/>
<AppenderRef ref="textArea" level="ERROR"/>
</Root>
</Loggers>
</Configuration>

最佳答案

rgoers 是对的,你的 Log4j 插件类上有 Spring 注释很奇怪。@Configuration@ComponentScan 不应该在那里。首先删除那些。顺便说一句,有时将状态设置为 DEBUG 很有用(在调试 log4j2 配置时),例如

<Configuration status="ERROR" 

如果您的插件未被识别,可能是您没有进行注释处理。如果您使用 Gradle,请务必添加 log4j-core 作为 annotationProcessor 依赖项。

annotationProcessor 'org.apache.logging.log4j:log4j-core'

如果您使用 IntelliJ,请务必在“首选项”->“构建、执行、部署”->“编译器”->“注释处理器”->“启用注释处理”中启用注释处理。

如果一切正常,Log4J 应该检测到您的 Appender 插件,这就是本问题的主题。

关于java - 使用 Spring Boot 创建自定义附加程序以将日志消息输出到文本区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57394504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com