spring boot整合log4j2及MQ消费处理系统日志示例
作者:kl 发布时间:2023-06-17 17:47:54
标签:springboot,log4j2,MQ,消费处理
前言
当系统的并发比较高的时候,日志的处理输出也是一种性能的开销负担,所以,选择一个中间件来处理消费日志必不可少!
下面是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


猜你喜欢
- 前言Spring 的 JDBC Templet 是 Spring 对 JDBC 使用的一个基本的封装。他主要是帮助程序员实现了数据库连接的管
- JNI中的java接口使用项目需求,需要在c++函数中监听相应的状态,并在java端进行一些列的处理。这个需要在JNI中写一个subscri
- 本文实例讲述了C#创建自签名认证文件的方法。分享给大家供大家参考。具体如下:using System;using System.Runtim
- C#类如下:using System;using System.Collections.Generic;using System.Text;
- 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Ap
- FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化
- 本篇介绍我们如何利用selenium 来操作各种页面元素阅读目录链接(link)输入框 textbox按钮(Button)下拉选择框(Sel
- 场景File与FileStream的区别举例:将读取文件比作是从A桶往B桶运水。使用File就是整个用桶倒进去,使用FileStream就是
- 这篇文章主要介绍了spring boot如何指定启动端口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 一、实验目的1. 掌握面向对象的编程思想、类与对象;2. 掌握类的封装性、继承性和多态性的作用;3. 掌握成员变量和成员方法的特性、构造方法
- 前言值类型和引用类型,是c#比较基础,也必须掌握的知识点,但是也不是那么轻易就能掌握,今天跟着老胡一起来看看吧。 典型类型首先我们
- 本文主要介绍了C# WinForm状态栏实时显示当前时间(窗体状态栏StatusStrip示例),分享给大家,具体如下:实现效果:通过Sta
- 标识符和关键字标识符读音 biao zhi fu什么是标识符包、类、变量、方法…等等,只要是起名的地方,那个名字就是标
- 如下所示:Ctrl+1或F2快速修复Ctrl+D快捷删除行Shift+Enter 快速切换到下一行,在本行的任何位置都可Ctrl+F11快速
- 前段时间学习JDBC,要连接mysql获取数据。按照老师的样例数据,要存一些名字之类的信息,用的都是英文名,我当时就不太想用英文,就把我室友
- 1. 定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。2. 使用的
- XmlTextReader 提供对 XML 数据流的只进只读访问。当前节点指读取器定位到的节点。使用任何读方法推进读取器并且属性反映当前节点
- 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的
- 1. pom.xml文件配置<?xml version="1.0" encoding="UTF-8&qu
- 在Java的学习中,涉及到两个系统环境变量path和classpath一. path环境变量path环境变量是系统环境变量的一种,它用于保存