当前位置: 首页 > 知识库问答 >
问题:

如何使用log4j appender for kafka编写应用程序日志?

晏华奥
2023-03-14
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug" name="kafka-logs" 
packages="myapp.kafka.test">
<Appenders>
    <Kafka name="Kafka" topic="test-kafka-topic">
        <JSONLayout />
        <Property name="bootstrap.servers">server1,server2</Property>
    </Kafka>
    <Async name="Async">
        <AppenderRef ref="Kafka"/>
    </Async>

    <Console name="stdout" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5p [%-7t] %F:%L - %m%n"/>
    </Console>

</Appenders>
<Loggers>
    <Root level="INFO">
        <AppenderRef ref="Kafka"/>
        <AppenderRef ref="stdout"/>
    </Root>
    <Logger name="org.apache.kafka" level="WARN" />
</Loggers>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.11.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.11.2</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.10</version>
    </dependency>

    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-log4j-appender</artifactId>
        <version>1.0.0</version>
        <exclusions>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
@SpringBootApplication
public class TestApplication {
private static final Logger logger = 
LoggerFactory.getLogger(TestApplication.class);
public static void main(String[] args) {
  SpringApplication application = new SpringApplication(TestApplication.class);
  logger.info("Before Application Startup");
  application.run(args);
  logger.info("After Application Startup");
}
}
  {
  "thread" : "main",
  "level" : "INFO",
  "loggerName" : "TestApplication",
  "message" : "Started TestApplication in 17.19 seconds (JVM running for 22.67)",
  "endOfBatch" : false,
  "loggerFqcn" : "org.apache.commons.logging.LogFactory$Log4jLog",
  "instant" : {
  "epochSecond" : 1555422668,
  "nanoOfSecond" : 856000000
},
"threadId" : 1,
"threadPriority" : 5
}
08:51:08.856 [main] INFO  TestApplication - Started TestApplication in 17.19 seconds (JVM running for 22.67)
[main] INFO TestApplication - Testing my application from TestApplication
[main] ERROR TestApplication - Testing my application from TestApplication

共有1个答案

上官自明
2023-03-14
<!--excluding logback -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>logback-classic</artifactId>
                </exclusion>
            </exclusions>
        </dependency>


<!--adding log4j2 and kafka appender-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-log4j-appender</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" name="kafka-appender" packages="Citydi.ElasticDemo">

    <Appenders>

        <Kafka name="kafkaLogAppender" topic="Second-Topic">
            <JSONLayout />
            <Property name="bootstrap.servers">localhost:9092</Property>
            <MarkerFilter marker="Recorder" onMatch="DENY" onMismatch="ACCEPT"/>
        </Kafka>

        <Console name="stdout" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} stdout %highlight{%-5p} [%-7t] %F:%L - %m%n"/>
            <MarkerFilter marker="Recorder" onMatch="DENY" onMismatch="ACCEPT"/>
        </Console>

    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="kafkaLogAppender"/>
            <AppenderRef ref="stdout"/>
        </Root>
        <Logger name="org.apache.kafka" level="warn" />
    </Loggers>

</Configuration>
 类似资料:
  • 问题内容: 我想用Python编写一个Android应用,将.py文件转换为APK。 问题答案: 要点:首先,APK不仅仅是压缩字节码(例如,应用程序清单,资源等),实际上还有很多其他功能,因此谈论将Python文件“转换”为APK并没有多大意义。 。 其次,我不鼓励这样做。我强烈建议改用Xamarin Forms,Cordova,Java或Xamarin.Android。Xamarin Form

  • 应用程序开发人员使用composer-clientnpm模块以编程方式连接到已部署的业务网络,创建、读取、更新、删除资产和参与者,以及提交交易。如果应用程序需要能够部署或管理业务网络,则可以使用composer-adminnpm模块。 示例landregistry.js文件包含一个代表土地注册的类,并包含列出土地权证、添加默认权证和提交交易的方法。这已经使用JavaScript类实现了; 然而,你

  • translated_page: https://github.com/PX4/Devguide/blob/master/en/tutorials/tutorial_hello_sky.md translated_sha: 95b39d747851dd01c1fe5d36b24e59ec865e323e translated: true 第一个应用程序教程(Hello Sky) 本教程详细解释了如

  • 来自Java规范SE 7版 §3.1 Unicode 程序是使用Unicode字符集编写的。 §3.2词汇翻译 使用以下三个词法翻译步骤,将原始Unicode字符流转换为一系列标记。。。 我很困惑,因为我用我的本机字符编码(Windows-1252)编写我的源代码,规范提到(?)都从原始Unicode字符流开始,然后执行词法翻译(包括Unicode转义转换)。 他们提到Unicode转义可以用来包

  • 问题内容: 我想知道为数千名用户编写聊天应用程序的正确方法是什么。 我只是感到困惑,我如何才能每秒使用AJAX或更少的方法来对服务器执行ping操作,并检查MySQL中是否有新记录等,并且服务器负载可以接受。 我目前正在考虑使用jQuery,PHP和MySQL进行编码。 请指教。您的帮助将不胜感激。 问题答案: 客户端 对于需要轮询服务器的任何程序,我建议使用WebSockets。 我写了一个非常

  • 译者:firdameng 作者:Soumith Chintala 在这个简短的教程中,我们将讨论PyTorch的分布式软件包。 我们将看到如何设置分布式设置,使用不同的通信策略,并查看包的内部部分。 开始 PyTorch中包含的分布式软件包(即torch.distributed)使研究人员和从业人员能够轻松地跨进程和计算机集群并行化他们的计算。 为此,它利用消息传递语义,允许每个进程将数据传递给任