1. 整合Logback,滚动记录+多文件

本文涉及的产品
RDS AI 助手,专业版
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: `logback-spring.xml` 配置了多日志模块,按类别分离支付、任务、错误、请求参数及SQL等日志输出,支持滚动归档与级别控制。通过 `LogProxy.getLogger()` 获取指定命名的日志记录器,实现精准日志分类输出,提升系统可维护性与排查效率。(238字)

1.logback-spring.xml
XML
复制代码
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<?xml version="1.0" encoding="UTF-8"?>
${LOGHOME}/job/job-%d{yyyy-MM-dd}.log
15

<!--支付-->
<logger name="PAY_LOG" additivity="${ADDITIVITY}">
    <level value="INFO"/>
    <appender-ref ref="PAY_FILE"/>
</logger>
<!--任务-->
<logger name="JOB_LOG" additivity="${ADDITIVITY}">
    <level value="INFO"/>
    <appender-ref ref="JOB_FILE"/>
</logger>
<!--错误-->
<logger name="ERROR_LOG" additivity="${ADDITIVITY}">
    <level value="ERROR"/>
    <appender-ref ref="ERROR_FILE"/>
</logger>
<!--请求参数-->
<logger name="INFO_LOG" additivity="${ADDITIVITY}">
    <level value="INFO"/>
    <appender-ref ref="INFO_FILE"/>
</logger>
<!--请求参数-->
<logger name="REQUEST_PARAM_LOG" additivity="${ADDITIVITY}">
    <level value="INFO"/>
    <appender-ref ref="REQUEST_PARAM_FILE"/>
</logger>
<!--sql日志输出设置-->
<logger name="cn.zhicall.web.dao" additivity="${ADDITIVITY}">
    <level value="DEBUG"/>
    <appender-ref ref="SQL_FILE"/>
</logger>
<!--第三方日志输出配置-->
<logger name="java.sql.Connection" additivity="${ADDITIVITY}">
    <level value="DEBUG"/>
    <appender-ref ref="SQL_FILE"/>
</logger>
<logger name="java.sql.Statement" additivity="${ADDITIVITY}">
    <level value="INFO"/>
    <appender-ref ref="SQL_FILE"/>
</logger>
<logger name="java.sql.PreparedStatement" additivity="${ADDITIVITY}">
    <level value="DEBUG"/>
    <appender-ref ref="SQL_FILE"/>
</logger>
<logger name="com.alibaba.druid" additivity="${ADDITIVITY}">
    <level value="DEBUG"/>
    <appender-ref ref="SQL_FILE"/>
</logger>
<logger name="java.sql.ResultSet" additivity="${ADDITIVITY}">
    <level value="INFO" />
    <appender-ref ref="SQL_FILE" />
</logger>
<!-- spring的日志输入设置 -->
<logger name="org.springframework" additivity="${ADDITIVITY}">
    <level value="INFO"/>
    <appender-ref ref="INFO_FILE"/>
</logger>
<logger name="org.mybatis.spring.mapper" additivity="${ADDITIVITY}">
    <level value="INFO"/>
    <appender-ref ref="INFO_FILE"/>
</logger>
<!-- MyBatis日志输出设置 -->
<logger name="org.apache.ibatis" level="DEBUG" additivity="${ADDITIVITY}">
    <level value="INFO"/>
    <appender-ref ref="SQL_FILE"/>
</logger>
<logger name="org.apache.ibatis.io.ResolverUtil" additivity="${ADDITIVITY}">
    <level value="INFO"/>
    <appender-ref ref="SQL_FILE"/>
</logger>

<root level="debug">
    <appender-ref ref="CONSOLE" />
</root>


2.使用示例
Java
运行代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package cn.test.web.controller.im;

import com.zhicall.framework.core.common.utils.log.LogProxy;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.concurrent.TimeUnit;

/**

  • @author Herb
  • @create 2020-04-26 13:05
    **/
    @RestController
    @RequestMapping("/test")
    public class TestController {

    private Logger logger = LogProxy.getLogger("INFO_LOG");

    private Logger logger2 = LogProxy.getLogger("ERROR_LOG");

    @Autowired
    private ImPlatformDoctorService imPlatformDoctorService;

    @Autowired
    protected RedisTemplate redisTemplate;

    @GetMapping("/getuser")
    public void getuser() {

     logger.info("进入getUser(INFO_LOG-INFO)");
     logger.error("进入getUser(INFO_LOG-ERROR)");
     logger2.error("进入getUser(ERROR_LOG-ERROR)");
     imPlatformDoctorService.queryDoctorConfig(10407L, "1");
    

    }

}

相关文章
|
4月前
|
人工智能 JavaScript 机器人
保姆级教程:2026年阿里云上+本地部署OpenClaw(Clawdbot)及集成QQ机器人指南
2026年,OpenClaw(原Clawdbot、Moltbot)凭借“自然语言指令+任务自动化”的核心优势,成为个人与轻量团队搭建专属AI助手的首选工具。它不仅能实现智能对话,更能联动QQ、飞书等多平台,自动执行文件处理、信息查询、定时任务等实操性工作,堪称“24小时在线的私人AI员工”。本文将全程拆解**2026年阿里云OpenClaw超简单部署步骤**、本地私有化部署流程,重点讲解QQ机器人全流程集成,附带详细代码命令、避坑指南与实战测试,零基础新手也能零失误落地,全程不超过25分钟,彻底打破技术门槛。
981 6
|
存储 算法 测试技术
【C++数据结构——树】二叉树的遍历算法(头歌教学实验平台习题) 【合集】
本任务旨在实现二叉树的遍历,包括先序、中序、后序和层次遍历。首先介绍了二叉树的基本概念与结构定义,并通过C++代码示例展示了如何定义二叉树节点及构建二叉树。接着详细讲解了四种遍历方法的递归实现逻辑,以及层次遍历中队列的应用。最后提供了测试用例和预期输出,确保代码正确性。通过这些内容,帮助读者理解并掌握二叉树遍历的核心思想与实现技巧。
703 3
|
网络协议 算法 网络性能优化
【TCP】核心机制:滑动窗口、流量控制和拥塞控制
【TCP】核心机制:滑动窗口、流量控制和拥塞控制
553 2
|
机器学习/深度学习 索引 Python
Numpy学习笔记(二):argmax参数中axis=0,axis=1,axis=-1详解附代码
本文解释了NumPy中`argmax`函数的`axis`参数在不同维度数组中的应用,并通过代码示例展示了如何使用`axis=0`、`axis=1`和`axis=-1`来找到数组中最大值的索引。
2151 0
Numpy学习笔记(二):argmax参数中axis=0,axis=1,axis=-1详解附代码
|
消息中间件 算法 Kafka
从零开始掌握Kafka Rebalance和分区分配
**Kafka Rebalance详解:**当消费者组成员、订阅主题或分区变化时,集群需重新分配任务。涉及关键点:成员增减、主题数量及分区数变更。Rebalance包括Leader选举、RangeAssignor算法的分区分配,以及创建、删除、修改和查询Topic的基本操作。了解这些有助于优化Kafka集群管理。关注“软件求生”获取更多技术内容!
1022 0
|
人工智能 弹性计算 Kubernetes
【云故事探索】NO.10:厦门立马耀的数字化转型之路
厦门立马耀网络科技有限公司在数字化转型中,凭借敏锐的市场洞察和技术创新,将云计算深度融合于业务。其品牌“蝉妈妈”为中小企业提供全方位数字营销解决方案,成为行业标杆。面对快速变化的市场需求,公司通过与阿里云合作,构建高可靠性计算平台,提升效率,并利用AI技术赋能客户,推动业务多元化发展,展现了云计算在企业成长中的巨大潜力。
|
Web App开发 JSON NoSQL
阿里云的数据库购买/变配遇到问题了如何获取 RequestID?
在阿里云使用数据库产品遇到问题时提工单咨询,官方工程师索要RequestID的情况,可是又不知道如何去获取,那么这篇文章会帮到你。
931 0
|
机器学习/深度学习 人工智能 自然语言处理
Midjourney prompt关键词生成工具推荐
Midjourney prompt关键词生成工具推荐
985 0