首页 > 其他分享 > 【Spring-boot-route(十五)整合RocketMQ+(十六)使用logback生产日志文件】

【Spring-boot-route(十五)整合RocketMQ+(十六)使用logback生产日志文件】

时间:2023-02-14 16:02:56浏览次数:41  
标签:Topic Spring route boot 发送 消息 spring 日志 logback

spring-boot-route(十五)整合RocketMQ

RocketMQ简介

RocketMQ是阿里巴巴开源的消息中间件。目前已经贡献给Apache软件基金会,成为Apache的顶级项目。

rocketMQ基本概念

 【Spring-boot-route(十五)整合RocketMQ+(十六)使用logback生产日志文件】_spring

1. Producer Group

生产者组:是一类生产者的集合,通常发送同一类消息并且发送逻辑一致。


2. Producer

生产者:负责发送消息,有三种消息发送模式。

  • 同步发送:收到确认后再发送下一条消息
  • 异步发送:发送后,不等待确认继续发送下一条
  • 单向发送:只负责发送消息,无法确认并且没有回调,适合收集日志


3. Consumer Group

消费者组:是一类消费者的集合,通常消费同一类消息并且消费逻辑一致。


4. Consumer

消息者:负责消费消息,有两种消费模式

  • 拉取型消费:主动从消息服务器拉取信息,只要批量拉取到消息,用户应用就会启动消费过程
  • 推送型消费:实际上也是拉取消息,只不过是将拉取逻辑进行了封装,将消息到达时执行的回调接口留给用户来实现


5. Broker

消息服务器:存储消息


6. NameServer

作用和zookeeper类似,用来保存broker相关元素,并给producer和consumer查找broker消息,Producer 在发送消息前会根据 Topic 到 NameServer 获取到 Broker 的路由信息,Consumer 也会定时获取 Topic 的路由信息。


7. Topic

消息主题


8. Tag

标签,Topic的二级分类,也可以理解为消息队列,主题被划分为一个或多个子主题,即消息队列。一个 Topic 下可以设置多个消息队列,发送消息时执行该消息的 Topic ,RocketMQ 会轮询该 Topic 下的所有队列将消息发出去。

Spring Boot整合Rocketmq

1. 引入依赖

<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>

2. 配置rocketmq信息

rocketmq:
name-server: 127.0.0.1:9876
producer:
group: my-producer-group

3. 构建生产者

@RestController
public class Producer {

@Autowired
private RocketMQTemplate rocketMQTemplate;

@GetMapping("send")
public void send(){

rocketMQTemplate.convertAndSend("first-topic","你好,Java旅途");
}
}

4. 构建消费者

@Component
@RocketMQMessageListener(topic = "first-topic",consumerGroup = "my-consumer-group")
@Slf4j
public class Consumer implements RocketMQListener<String> {

@Override
public void onMessage(String message) {
log.info("我收到消息了!消息内容为:"+message);
}
}

emmm,消息队列的内容就暂时告一段落了,文章中只是演示了最简单的收发消息,在实际应用中需要考虑的问题远比这要多。


》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

接下来讲解:

【spring-boot-route(十六)使用logback生产日志文件】

日志是一个系统非常重要的一部分,我们经常需要通过查看日志来定位问题,今天我们一起来学习一下Spring Boot的日志系统。有很多同学习惯性的在生产代码中使用System.out来输出日志,这是不推荐的一种做法,因为System.out是一个同步操作,会在一定程度上影响系统性能,而Logger是一个异步操作。

Spring Boot默认的日志系统是​​logback​​​,当然我们并不需要去引用​​logback​​​的依赖,因为在​​spring-boot-starter​​​中已经应用了​​logback​​的依赖。


一、控制台日志信息介绍

1.1 日志级别

日志级别从高到低为:TRACE < DEBUG < INFO < WARN < ERROR < ALL < OFF

如果日志设置为​​ERROR​​,那么低于​​ERROR​​级别的日志将不会输出。

如果我们想要设置某个包的日志级别,则在pom文件中加入下面这行配置:


logging:
level:
# 包名
com.javatrip: warn

如果想修改Spring Boot默认级别,则将包名改为​​root​​。


logging:
level:
root: warn

1.2 控制台日志介绍

默认情况下,Spring Boot会将​​INFO​​级别的日志输出到控制台。控制台输出信息如下:

 【Spring-boot-route(十五)整合RocketMQ+(十六)使用logback生产日志文件】_spring_02


日志输出内容具体含义如下:

  • 时间日期:精确到毫秒
  • 日志级别:ERROR, WARN, INFO, DEBUG or TRACE
  • 进程ID
  • 分隔符:​​---​​ 标识实际日志的开始
  • 线程名:方括号括起来(可能会截断控制台输出)
  • Logger名:通常使用源代码的类名
  • 日志内容


二、日志文件输出

在实际项目中,我们需要将日志输出为文件,以便快速定位问题。Spring Boot关于日志文件的信息可以参考官网​​https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-logging​​。

Because the standard ​​logback.xml​​ configuration file is loaded too early, you cannot use extensions in it. You need to either use ​​logback-spring.xml​​ or define a ​​logging.config​​ property.

这句话的意思大概就是:由于标准的logback.xml配置文件加载得太早,因此您不能在其中使用扩展名。您需要使用logback-spring.xml或定义logging.config属性。

因此我们来定义一个​​logback-spring.xml​​的文件来进行日志信息的配置。

​logback-spring.xml​​文件定义及注释:


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志文件名 -->
<property name="LOG_FILE" value="myLog" />
<!-- 日志文件路径 -->
<property name="LOG_PATH" value="D://log//dev" />
<!-- 控制台日志输出格式 -->
<property name="LOG_PATTERN_CONSOLE" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} --> %msg%n" />
<!-- 文件日志输出格式 -->
<property name="LOG_PATTERN_FILE" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} --> %msg%n" />
<!--- 设置控制台日志 -->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${LOG_PATTERN_CONSOLE}</pattern>
</encoder>
</appender>
<!-- 设置日志文件 -->
<appender name="fileLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${LOG_PATTERN_FILE}</pattern>
</encoder>
<!-- 总文件日志 -->
<file>${LOG_PATH}/${LOG_FILE}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 每天的文件日志 -->
<fileNamePattern>${LOG_PATH}/${LOG_FILE}-%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志文件保存7天,超过7天的自动删除 -->
<maxHistory>7</maxHistory>
</rollingPolicy>
</appender>

<!-- 设置日志级别,及需要记录日志的类 -->
<root level="INFO">
<appender-ref ref="consoleLog" />
<appender-ref ref="fileLog" />
</root>
</configuration>


启动项目后,在​​D:\log\dev​​中会生产我们的日志文件​​myLog.log​​,加入我们系统一直运行,则在我们的文件目录下会生成一个​​myLog.log​​文件和7个最近日志的文件​​myLog-某年-某月-某日.log​​。


标签:Topic,Spring,route,boot,发送,消息,spring,日志,logback
From: https://blog.51cto.com/u_15874356/6056462

相关文章

  • springcloud sidecar 实现C语言调用语言模块
    以前对springcloud的印象停留在大项目功能模块的独立、负载均衡、熔断等功能。这次项目接触了另一个用法,多语言异构。以前Java调C都是用的JNA或者JNI,这次C调Java用了spring......
  • JAVA和Spring的SPI机制讲解
    目录1SPI机制讲解1.1引言1.2JavaSPI实现1.2.1示例说明1.2.2相关测试1.2.3源码分析1.3SpringSPI1.3.1Spring示例1.3.2相关测试类1.3.3源码分析1SPI机制讲解......
  • 云小课|使用SpringBoot快速构建FunctionGraph HTTP函数
    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击......
  • 【学习笔记】Spring注解开发
    Spring注解开发使用注解开发首先要导入context约束,然后开启注解支持<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/bea......
  • springboot基础1
    springboot@RestController//为了返回字符串@RequestMapping用来处理请求地址映射@RestController//为了返回字符串publicclassHelloController{//接口:http......
  • SpringMVC:域对象共享数据
    SpringMVC:域对象共享数据使用ServletAPI向request域对象共享数据@RequestMapping("/testServletAPI")publicStringtestServletAPI(HttpServletRequestrequest){......
  • 1.spring框架
    轻量级:体积小,应用java包少,可以独立进行使用。   Java直接输出一个类的对象的时候,会自动调用这个类的toString方法。这个方法在object类中,而所有的类都继承object......
  • 响应式圣经:10W字,实现Spring响应式编程自由
    文章很长,而且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面......
  • springBoot集成flowable
    前言Flowable可以十分灵活地加入你的应用/服务/构架。可以将JAR形式发布的Flowable库加入应用或服务,来嵌入引擎。以JAR形式发布使Flowable可以轻易加入任何Java环境:Java......
  • Spring Security 解析
    是什么SpringSecurity是一款基于Spring的安全框架,主要包含认证和授权两大安全模块,和另外一款流行的安全框架ApacheShiro相比,它拥有更为强大的功能。为什么在强调Sprin......