我正在尝试为log4j2.0创建一个自定义appender,但是在获取log4j配置以识别appender时遇到问题。我知道log4j 2.0不支持配置属性中的包。因此,正如这里所建议的,我尝试使用纯javac运行代码,但即使如此,它也会出现以下错误:2015-03-11 18:47:35281错误处理元素测试:CLASS_NOT_FOUND 2015-03-11 18:47:35307错误无法找到记录器的appender test1
这是我的自定义附件:
@Plugin(name = "Test", category = "Core", elementType = "appender", printObject = true)
public class TestAppender extends AbstractAppender{
protected TestAppender(String name, Filter filter,
Layout<? extends Serializable> layout, boolean ignoreExceptions) {
super(name, filter, layout, ignoreExceptions);
// TODO Auto-generated constructor stub
}
@PluginFactory
public static TestAppender createAppender(@PluginAttribute("name") String name,
@PluginAttribute("ignoreExceptions") boolean ignoreExceptions,
@PluginElement("Layout") Layout<? extends Serializable> layout,
@PluginElement("Filters") Filter filter) {
return new TestAppender(name, filter, layout, true);
}
public void append(LogEvent event) {
// TODO Auto-generated method stub
System.out.println(event.getMessage());
}
}
和我的配置xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" >
<Appenders>
<Test name="test1" >
<PatternLayout pattern="%d %msg%n" />
<ThresholdFilter level="DEBUG" />
</Test>
</Appenders>
<Loggers>
<Root level="DEBUG">
<AppenderRef ref="test1" />
</Root>
</Loggers>
</Configuration>
提前感谢您提供的有用信息
在这里查看文档,您可能缺少maven编译器插件中的注释处理器配置。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<executions>
<execution>
<id>log4j-plugin-processor</id>
<goals>
<goal>compile</goal>
</goals>
<phase>process-classes</phase>
<configuration>
<proc>only</proc>
<annotationProcessors>
<annotationProcessor>org.apache.logging.log4j.core.config.plugins.processor.PluginProcessor</annotationProcessor>
</annotationProcessors>
</configuration>
</execution>
</executions>
</plugin>
我在log4j2.xml的配置中添加了包含Custom Appender的包,它没有错误地拾起了自定义appender。
<Configuration packages="com.yourcompany.yourcustomappenderpackage">
我引用了这个线程-如何在log4j2中创建自定义Appender?
问题内容: 我已经将我的log4j2自定义插件打包到一个单独的jar中(仅包含插件类),并将其放在应用程序类路径中。但是不会被检测到。 我用谷歌搜索发现它是一个错误-“ packages”参数不再使用。还有一些链接建议了一些替代方案,其中将maven pom.xml和log4j2插件dat文件放入上下文中。问题是我不熟悉Maven,并且不知道如何生成dat文件。我只知道它包含在log4j-2.1-
我创建了一个自定义的Log4J2Kafka附加器,因为我需要以协议缓冲区格式发送消息。当我运行应用程序时,我看到以下警告。如何使自定义追加器覆盖默认追加器? 插件[kafka]已经映射到类org.apache.logging.log4j.core.appender.mom.kafka.kafkaappender,忽略了类com.abc.appender.kafkaappender 注意:我阅读了h
我正在我的web项目中使用log4j2。我试图通过扩展AbstractAppender将日志直接放入Kafka。根据文档,我的理解是我可以为一个自定义的附加器指定patternlayout,并且设置好了,我的记录器将用格式化的字符串向kafka发送日志事件,但这并没有发生。log4j2.xml看起来像
我有下面的Log4J2配置XML: 但是,每当log4j2 appender写入文件时,它在写入指定的文件路径时不会使用正确的字符串。 log4j2 appender第一次写入文件时,会写入由指定的正确文件路径。但是,只要将具有另一个Id的员工的信息放入线程上下文中,appender仍然会记录到旧文件路径。 例如,appender第一次记录时,它会写入正确的路径: 但当记录器记录下一个员工Id(使
我的数据库中没有插入任何内容。所以我的第一个问题是为什么它不工作,请给我任何解决办法,如果可能的话。 另一个问题是,我将的intLevel调整为10,如下所示: 而现在它正在插入数据库,但也抛出了一些错误。 如有任何帮助,我们将不胜感激,并提前向您表示感谢。
我使用了一个自定义插件,该插件使用PluginManager类以编程方式注册,以加载map中的值,并根据map的内容更改RollingFileAppender的文件名。 然后,我更改了配置,使用路由追加器,以便能够使用ThreadContext内容进一步更改文件名(基本上,我希望应用程序的每个线程都有一个日志文件)。 然而,自从我开始使用Routing appender以来,我的自定义插件不再产生