Как настроить KafkaAppender в log4j2 с помощью Programmati c Способ настройки? - PullRequest
0 голосов
/ 13 апреля 2020
Код

, приведенный ниже, является примером, приведенным apache log4j2, но как я могу настроить KafkaAppender таким образом?

@Plugin(name = "CustomConfigurationFactory", category = ConfigurationFactory.CATEGORY)
@Order(50)
public class CustomConfigurationFactory extends ConfigurationFactory {

    static Configuration createConfiguration(final String name, ConfigurationBuilder<BuiltConfiguration> builder) {
        builder.setConfigurationName(name);
        builder.setStatusLevel(Level.INFO);
//        builder.add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.NEUTRAL).
//                addAttribute("level", Level.DEBUG));
        AppenderComponentBuilder appenderBuilder = builder.newAppender("Stdout", "CONSOLE").
                addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT);
        appenderBuilder.add(builder.newLayout("PatternLayout").
                addAttribute("pattern", "%d [%t] %-5level: %msg%n%throwable"));
//        appenderBuilder.add(builder.newFilter("MarkerFilter", Filter.Result.DENY,
//                Filter.Result.NEUTRAL).addAttribute("marker", "FLOW"));
        AppenderComponentBuilder kafkaAppender = builder.newAppender("Stdout", "CONSOLE").
                addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT);

        builder.add(appenderBuilder);
        builder.add(builder.newLogger("org.apache.logging.log4j", Level.DEBUG).
                add(builder.newAppenderRef("Stdout")).
                addAttribute("additivity", false));
        builder.add(builder.newRootLogger(Level.INFO).add(builder.newAppenderRef("Stdout")));
        return builder.build();
    }
}

1 Ответ

0 голосов
/ 13 апреля 2020

я решил,

        final AppenderComponentBuilder ddlKafkaAppender = builder.newAppender("ddl-kafka", "Kafka").addAttribute("topic", config.getDdlTopic());
        ddlKafkaAppender.addComponent(builder.newProperty("bootstrap.servers", config.getHost()));
        ddlKafkaAppender.add(builder.newLayout("PatternLayout").
                addAttribute("pattern", "%message"));
        builder.add(ddlKafkaAppender);

        final AppenderComponentBuilder sqlKafkaAppender = builder.newAppender("sql-kafka", "Kafka").addAttribute("topic", config.getSqlTopic());
        sqlKafkaAppender.addComponent(builder.newProperty("bootstrap.servers", config.getHost()));
        sqlKafkaAppender.add(builder.newLayout("PatternLayout").
                addAttribute("pattern", "%message"));
        builder.add(sqlKafkaAppender);


        builder.add(builder.newLogger("org.apache.logging.log4j", Level.DEBUG).
                add(builder.newAppenderRef("Stdout")).
                addAttribute("additivity", false));

        builder.add(builder.newLogger("sql", Level.INFO).
                add(builder.newAppenderRef("sql-kafka")));
        builder.add(builder.newLogger("ddl", Level.INFO).
                add(builder.newAppenderRef("ddl-kafka")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...