log4j2配置输出日志到Kafka

首先,需要引入依赖包:

		<dependency> 
			<groupId>org.apache.kafka</groupId>
			<artifactId>kafka-clients</artifactId>
			<version>0.9.0.1</version>
		</dependency>

如果配置文件是yml格式的,还需要这个依赖:

		<dependency>	<!-- 加上这个才能辨认到log4j2.yml文件 -->
			<groupId>com.fasterxml.jackson.dataformat</groupId>
			<artifactId>jackson-dataformat-yaml</artifactId>
		</dependency>

yml格式的配置方法(文件名:log4j2.yml):

Configuration:
  status: warn

  Appenders:
    Console:  #输出到控制台
      name: CONSOLE
      target: SYSTEM_OUT
      ThresholdFilter:
        level: trace
        onMatch: ACCEPT
        onMismatch: DENY
      PatternLayout:
        pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n"
    Kafka: #输出到Kafka
      name: KAFKA
      topic:  test
      ThresholdFilter:
        level: error
        onMatch: ACCEPT
        onMismatch: DENY
      PatternLayout:
        pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n"
      Property:
        - name: bootstrap.servers
          value: 192.168.0.9:9092

  Loggers:
    Root:
      level: info
      AppenderRef:
        - ref: CONSOLE
        - ref: KAFKA
    Logger: # 为com.xjj包配置特殊的Log级别,方便调试
      - name: com.xjj
        additivity: false
        level: trace
        AppenderRef:
          - ref: CONSOLE
          - ref: KAFKA
      - name: org.apache.kafka #听说这样可以避免递归调用
        level: INFO

xml格式的配置方法(文件名:log4j2.xml):

<Configuration status="warn" monitorInterval="30" strict="true"	schema="Log4J-V2.2.xsd">
	<Appenders>
		<!-- 输出到控制台 -->
		<Console name="Console" target="SYSTEM_OUT">
			<!-- 需要记录的级别 -->
			<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
			<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n" />
		</Console>
		
		<!-- 输出错误日志到Kafka -->
		<Kafka name="KAFKA" topic="test">
			<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />
			<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n" />
			<Property name="bootstrap.servers">192.168.0.9:9092</Property>
		</Kafka>
	</Appenders>

	<Loggers>
		<Root level="info"> <!-- 全局配置 -->
			<AppenderRef ref="Console" />
			<AppenderRef ref="KAFKA"/>
		</Root>

		<Logger name="com.xjj" level="trace" additivity="false">
			<AppenderRef ref="Console" />
			<AppenderRef ref="KAFKA"/>
		</Logger>
		
		<Logger name="org.apache.kafka" level="INFO" /> <!-- avoid recursive logging -->
	</Loggers>
</Configuration>

大功告成。



  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Flink 中,可以通过设置 `flink-conf.yaml` 文件来配置 Flink 的日志输出。在该文件中,可以设置 `flink.logging.log4j2.appender.kafka` 属性来指定使用 Kafka Appender 进行日志输出。具体的配置方式如下: 1. 在 `flink-conf.yaml` 文件中添加以下配置: ``` flink.logging.log4j2.appender.kafka.type = Kafka flink.logging.log4j2.appender.kafka.name = Kafka flink.logging.log4j2.appender.kafka.topic = log_topic flink.logging.log4j2.appender.kafka.layout.type = JsonLayout flink.logging.log4j2.appender.kafka.layout.compact = true flink.logging.log4j2.appender.kafka.property.bootstrap.servers = localhost:9092 ``` 上述配置中,`flink.logging.log4j2.appender.kafka.type` 属性指定了使用 Kafka Appender 进行日志输出,`flink.logging.log4j2.appender.kafka.name` 属性指定了 Appender 的名称,`flink.logging.log4j2.appender.kafka.topic` 属性指定了 Kafka Topic 的名称,`flink.logging.log4j2.appender.kafka.layout.type` 属性指定了日志输出的格式,这里使用了 JsonLayout,`flink.logging.log4j2.appender.kafka.property.bootstrap.servers` 属性指定了 Kafka Broker 的地址。 2. 在 Flink 代码中启动流处理任务时,可以通过 `StreamExecutionEnvironment.getConfig()` 方法获取 ExecutionConfig 对象,然后通过 `ExecutionConfig.setGlobalJobParameters()` 方法将 `flink-conf.yaml` 文件中的配置加载到 ExecutionConfig 对象中,如下所示: ``` StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); ExecutionConfig config = env.getConfig(); config.setGlobalJobParameters(ParameterTool.fromPropertiesFile("/path/to/flink-conf.yaml")); ``` 上述代码中,`ParameterTool.fromPropertiesFile()` 方法可以将 `flink-conf.yaml` 文件中的配置加载到一个 ParameterTool 对象中,然后通过 `ExecutionConfig.setGlobalJobParameters()` 方法将该对象中的配置加载到 ExecutionConfig 对象中。 这样就可以使用 Kafka Appender 进行日志输出了。需要注意的是,Kafka Appender 的具体配置方式可以根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值