Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在spring中为log4j2创建自定义appender_Java_Logging_Log4j_Log4j2_Appender - Fatal编程技术网

Java 如何在spring中为log4j2创建自定义appender

Java 如何在spring中为log4j2创建自定义appender,java,logging,log4j,log4j2,appender,Java,Logging,Log4j,Log4j2,Appender,根据建议进行了修改,所以现在当我尝试运行应用程序时,MyCustomAppender中的append()函数仍然没有被调用,尽管我在主应用程序中触发了log.error。也许我错过了什么? 这是春天的问题吗?我在MyCustomAppender中设置了断点,根本没有调用任何东西 谢谢 以下是原问题: 我在谷歌上搜索了很多关于为log4j2创建自定义appender的信息,因为我需要处理日志信息并发送到我们的日志服务器,我搜索了很多,没有任何效果,这就是我所做的,希望您能对错误的位置提出建议 pa

根据建议进行了修改,所以现在当我尝试运行应用程序时,MyCustomAppender中的append()函数仍然没有被调用,尽管我在主应用程序中触发了log.error。也许我错过了什么? 这是春天的问题吗?我在MyCustomAppender中设置了断点,根本没有调用任何东西

谢谢

以下是原问题:

我在谷歌上搜索了很多关于为log4j2创建自定义appender的信息,因为我需要处理日志信息并发送到我们的日志服务器,我搜索了很多,没有任何效果,这就是我所做的,希望您能对错误的位置提出建议

package demo;

import java.io.Serializable;

import org.apache.logging.log4j.core.Filter;
import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.appender.AbstractAppender;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
import org.apache.logging.log4j.core.config.plugins.PluginFactory;

@Plugin(category = "Core", name = "MyCustomAppender")
public class MyCustomAppender extends AbstractAppender {

    protected MyCustomAppender(String name, Filter filter,
            Layout<? extends Serializable> layout) {
        super(name, filter, layout);
        // TODO Auto-generated constructor stub
    }

    @PluginFactory
    public static MyCustomAppender createAppender(
            @PluginAttribute("name") String name) {
        // note: in this example the class name matches the @Plugin name,
        // but this is not required.
        return new MyCustomAppender(name, null, null);
    }

    @Override
    public void append(LogEvent arg0) {
        // TODO Auto-generated method stub
        System.out.print("inside here 123");
    }

}
我希望警告消息可以触发myCustomAppender类中的append()方法,但从未发生过


我这里缺少什么吗?

您的配置有
,但您的
MyCustomAppender
是否在包“demo”中?换言之,是自定义appender
demo.MyCustomAppender
的完全限定类名吗

如果没有,请在
包属性中输入自定义附加器的正确包名

其次,您将自定义插件的名称声明为“MyCustomAppender”(在
@plugin(category=“Core”,name=“MyCustomAppender”)
中)。但是,您的配置引用了未知的
。将StubAppender替换为


为了帮助进行故障排除,您可以将内部log4j状态日志级别设置为在配置中跟踪:
您的配置具有
,但您的
MyCustomAppender
是否在包“demo”中?换言之,是自定义appender
demo.MyCustomAppender
的完全限定类名吗

如果没有,请在
包属性中输入自定义附加器的正确包名

其次,您将自定义插件的名称声明为“MyCustomAppender”(在
@plugin(category=“Core”,name=“MyCustomAppender”)
中)。但是,您的配置引用了未知的
。将StubAppender替换为


为了帮助进行故障排除,您可以在配置中将内部log4j状态日志级别设置为跟踪:
我仔细检查了我的pom文件,发现有错误。我必须把

<exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>

org.springframework.boot
spring启动程序日志记录

在spring boot内部,谢谢

我仔细检查了我的pom文件,发现有错误。我必须把

<exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
@Plugin(name = "MyCustomAppender", category = Node.CATEGORY, elementType = "appender", printObject = true)

org.springframework.boot
spring启动程序日志记录
里面是弹簧靴,谢谢

@Plugin(name = "MyCustomAppender", category = Node.CATEGORY, elementType = "appender", printObject = true)
您需要像这样更改注释

不要忘记在log4j2.xml中添加配置,如下所示

<Configuration packages="yourAppenderPackageName">

您需要像这样更改注释

不要忘记在log4j2.xml中添加配置,如下所示

<Configuration packages="yourAppenderPackageName">


如果您的问题已被回答,请将其关闭。如果您的问题已被回答,请将其关闭。