spring boot整合log4j2及MQ消费处理系统日志示例

作者:kl 时间:2023-06-17 17:47:54 

前言

当系统的并发比较高的时候,日志的处理输出也是一种性能的开销负担,所以,选择一个中间件来处理消费日志必不可少!

下面是spring boot整合log4j2结合spring amqp来消费处理系统日志的实例,只需要简单的三步

1.添加相关jar依赖

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

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

2.系统log4j2.xml配置

如果需要跨系统处理日志,拷贝一份log4j2.xml到处理日志的系统

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n" />
</Console>
<RabbitMQ name="rabbitmq"
 addresses="localhost:5672"
 user="guest"
 password="guest"
 virtualHost="/"
 exchange="log4j2Sample"
 applicationId="log4j2SampleAppId"
 routingKeyPattern="%X{applicationId}.%c.%p"
 contentType="text/plain"
 contentEncoding="UTF-8"
 generateId="false"
 deliveryMode="PERSISTENT"
 charset="UTF-8"
 senderPoolSize="3"
 maxSenderRetries="5">
</RabbitMQ>
</Appenders>
<Loggers>
<Logger name="org.springframework.amqp.samples.log4j2" level="info">
<AppenderRef ref="rabbitmq" />
</Logger>
<Root>
<AppenderRef ref="STDOUT" />
</Root>
</Loggers>
</Configuration>

3.添加处理日志的消息监听

请将以下代码置于spring context上下文环境中

@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(value = "log4j2Sample", type = ExchangeTypes.FANOUT),
value = @org.springframework.amqp.rabbit.annotation.Queue))
public void echoLogs(String logMessage) {
System.out.println("在这里处理消费你的日志信息" + logMessage);
}

更多spring amqp的应用,请参考spring amqp官方参考文档:http://docs.spring.io/spring-amqp/docs

来源:http://www.kailing.pub/article/index/arcid/146.html

标签:springboot,log4j2,MQ,消费处理
0
投稿

猜你喜欢

  • c# 动态构建LINQ查询表达式

    2022-03-23 20:40:47
  • Java线程池必知必会知识点总结

    2021-07-30 13:08:02
  • Unity 制作一个分数统计系统

    2021-11-30 03:01:52
  • IntelliJ IDEA各种图标的含义

    2022-08-12 21:50:25
  • maven报错:Failed to execute goal on project问题及解决

    2021-09-30 09:58:36
  • Java毕业设计实战项目之仓库管理系统的实现流程

    2021-11-11 09:42:42
  • Java中的接口多继承机制

    2023-08-28 06:13:48
  • Android取消EditText自动获取默认焦点

    2023-09-09 00:14:13
  • C#使用windows服务开启应用程序的方法

    2022-08-14 04:37:14
  • C#基于Socket实现简单聊天室功能

    2023-05-09 01:17:32
  • SpringCloud Eureka的使用教程

    2022-03-23 22:30:59
  • java实现删除某条信息并刷新当前页操作

    2022-06-26 07:12:12
  • java 实现websocket的两种方式实例详解

    2023-01-22 04:41:32
  • java开发微信分享接口的步骤

    2021-08-22 12:30:59
  • Java IO文件后缀名过滤总结

    2021-09-01 23:36:47
  • Struts2中validate数据校验的两种方法详解附Struts2常用校验器

    2022-06-03 11:08:13
  • 简单的java socket客户端和服务端示例

    2023-06-27 18:13:27
  • Java编程调用微信接口实现图文信息推送功能

    2023-11-25 07:20:47
  • Java如何利用状态模式(state pattern)替代if else

    2021-08-15 09:31:08
  • C#中实现判断某个类是否实现了某个接口

    2022-12-31 19:39:45
  • asp之家 软件编程 m.aspxhome.com