Spring Boot 2中如何使用Log4j2实现按API接口路径动态保存日志?

spring boot 2中如何使用log4j2实现按api接口路径动态保存日志?

Spring Boot 2结合Log4j2实现API接口路径动态日志保存

本文介绍如何在Spring Boot 2应用中利用Log4j2,根据API接口路径动态生成并保存日志文件。这需要比简单使用RollingFileAppender更灵活的日志记录机制。

目标:为每个API接口(例如/paypage/createorder/addsave,/merchant/goodlist/getlistbyquery)创建独立的日志文件,保存在jar包目录/logs/接口路径/yyyy-mm-dd.log下。

问题:直接在main函数或拦截器中修改Log4j2配置文件文件名无效,因为配置文件加载时机过早。

存了个图 存了个图

视频图片解析/字幕/剪辑,视频高清保存/图片源图提取

存了个图 17 查看详情 存了个图

解决方案:使用Log4j2的RoutingAppender。RoutingAppender根据运行时条件将日志路由到不同的Appender。结合ThreadContext,我们可以将API路径作为路由键,动态控制日志文件路径。

实现步骤:

配置RoutingAppender: 在log4j-spring.xml中配置RoutingAppender,定义路由规则。规则根据ThreadContext中的键值匹配,将日志路由到对应的RollingFileAppender。${ctx:routingkey}获取运行时动态设置的路由键(API路径)。

                                                                    

拦截器设置路由键: 创建一个拦截器,在preHandle方法中使用ThreadContext.put("routingkey", apiPath)设置路由键(apiPath为API接口路径)。在postHandle方法中使用ThreadContext.remove("routingkey")清除路由键,避免影响后续请求。

public class Log4j2Interceptor implements HandlerInterceptor {    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {        String apiPath = request.getRequestURI();        ThreadContext.put("ROUTINGKEY", apiPath);        return true;    }    @Override    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {        ThreadContext.remove("ROUTINGKEY");    }}

通过以上步骤,Spring Boot 2应用即可根据API接口路径动态生成日志文件,实现更精细的日志管理。 请确保日志目录存在且具有写入权限。 RoutingAppender的路由规则可根据实际需求调整。

以上就是Spring Boot 2中如何使用Log4j2实现按API接口路径动态保存日志?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/271875.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
linux如何查内存大小
上一篇 2026年10月14日 20:54:58
李宁是哪个国家品牌的 李宁和安踏哪个更好
下一篇 2025年11月10日 08:36:49

相关推荐

  • 如何解决PHP命令行工具的自动更新问题?使用laravel-zero/phar-updater可以!

    可以通过以下地址学习composer:学习地址 在开发PHP命令行工具时,如何让用户轻松更新工具一直是一个棘手的问题。我曾在一个项目中遇到这个问题,用户需要手动下载新版本的PHAR文件,这不仅麻烦,而且容易出错。经过一番探索,我找到了laravel-zero/phar-updater库,它提供了简单…

    2026年10月14日
    200
  • Laravel模型关联预加载?预加载怎样使用?

    Laravel模型关联预加载?预加载怎样使用?Laravel模型关联预加载?预加载怎样使用?Laravel模型关联预加载?预加载怎样使用?Laravel模型关联预加载?预加载怎样使用?

    答案:Laravel模型关联预加载通过with()等方法一次性加载关联数据,避免N+1查询问题。当获取文章列表并显示作者时,未预加载会执行1+N次查询,使用with(‘author’)后仅需2次查询,显著提升性能。还可预加载多个、嵌套关联,添加约束条件,或使用load()延迟…

    2026年10月14日 • 用户投稿
    900
  • 如何开发健身食谱APP让用户爱不释手

    如何开发健身食谱APP让用户爱不释手如何开发健身食谱APP让用户爱不释手如何开发健身食谱APP让用户爱不释手如何开发健身食谱APP让用户爱不释手

    在健康生活日益受到重视的今天,一款优质的健身食谱app已成为健身人群和饮食管理者的得力助手。然而,许多现有应用因食谱匮乏或操作繁琐,难以让用户长期坚持使用。若想让你的健身食谱app开发项目脱颖而出,关键在于将科学营养体系与极致用户体验深度融合,真正实现让用户“用得上、离不开”。 一、健身食谱APP开…

    2026年10月14日 • 用户投稿
    100
  • 改图鸭AI图片生成软件使用技巧 快速上手改图鸭AI绘画创作

    改图鸭ai绘画的核心在于掌握提示词的使用,它通过文字将想法转化为图像,新手应从“主语+修饰+风格”的简单公式入手,逐步优化提示词并结合负面提示词与参数调整来提升出图质量,关键在于多尝试、多学习、多迭代,最终实现创意的精准表达。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 D…

    2026年10月14日
    000
  • VSCode如何配置Kotlin开发环境 VSCodeAndroid开发的优化设置

    VSCode如何配置Kotlin开发环境 VSCodeAndroid开发的优化设置VSCode如何配置Kotlin开发环境 VSCodeAndroid开发的优化设置VSCode如何配置Kotlin开发环境 VSCodeAndroid开发的优化设置VSCode如何配置Kotlin开发环境 VSCodeAndroid开发的优化设置

    vscode可通过安装jdk、kotlin扩展、gradle tasks等插件配置kotlin开发环境,实现语法高亮、代码补全和构建任务执行;2. 用于android开发时可胜任代码编辑、git管理、终端命令执行等轻量级任务,但缺乏布局可视化、深度调试和性能分析等完整ide功能;3. 常见问题包括j…

    2026年10月14日 • 用户投稿
    000
  • Laravel事务处理?数据库事务如何使用?

    Laravel事务处理?数据库事务如何使用?Laravel事务处理?数据库事务如何使用?Laravel事务处理?数据库事务如何使用?Laravel事务处理?数据库事务如何使用?

    Laravel事务通过DB::transaction()确保数据库操作的原子性,如银行转账场景中,扣款与加款需同时成功或失败。使用DB::transaction()闭包可自动管理事务提交与回滚,但需注意:未重新抛出异常会导致事务不回滚;数据库引擎须为InnoDB等支持事务的类型;嵌套事务依赖保存点机…

    2026年10月14日 • 用户投稿
    1200
  • 如何修复损坏的压缩文件_RAR/ZIP文件修复

    如何修复损坏的压缩文件_RAR/ZIP文件修复如何修复损坏的压缩文件_RAR/ZIP文件修复如何修复损坏的压缩文件_RAR/ZIP文件修复如何修复损坏的压缩文件_RAR/ZIP文件修复

    修复损坏的rar/zip文件首先尝试使用winrar的“修复压缩文件”功能生成rebuilt.rar或fixed.rar;2. 若winrar失败,改用7-zip尝试解压,因其容错性强,可跳过损坏块提取可用数据;3. 检查文件是否因下载不完整或存储介质问题导致损坏,必要时重新下载或检测硬盘;4. 当…

    2026年10月14日 • 用户投稿
    200
  • Laravel表单请求?自定义请求类如何使用?

    Laravel表单请求?自定义请求类如何使用?Laravel表单请求?自定义请求类如何使用?Laravel表单请求?自定义请求类如何使用?Laravel表单请求?自定义请求类如何使用?

    Laravel表单请求通过自定义请求类实现验证和授权逻辑的分离,提升代码可维护性。首先使用php artisan make:request StoreBlogPostRequest生成请求类,在rules()方法中定义字段验证规则,如标题必填、内容字符串等;在authorize()方法中检查用户权限…

    2026年10月14日 • 用户投稿
    200
  • Laravel读写分离?数据库读写怎样分离?

    Laravel读写分离?数据库读写怎样分离?Laravel读写分离?数据库读写怎样分离?Laravel读写分离?数据库读写怎样分离?Laravel读写分离?数据库读写怎样分离?

    Laravel读写分离通过将读请求分发到从库、写请求发送到主库,结合sticky机制与事务处理,有效提升数据库性能和系统可扩展性,适用于高并发读多写少场景。 Laravel的读写分离,简单来说,就是将数据库的读取操作和写入操作分别指向不同的数据库实例。通常,写入操作会去到主库(Master),而读取…

    2026年10月14日 • 用户投稿
    000
  • boss直聘怎么查看竞争力_boss直聘岗位竞争力分析功能使用

    boss直聘怎么查看竞争力_boss直聘岗位竞争力分析功能使用boss直聘怎么查看竞争力_boss直聘岗位竞争力分析功能使用boss直聘怎么查看竞争力_boss直聘岗位竞争力分析功能使用boss直聘怎么查看竞争力_boss直聘岗位竞争力分析功能使用

    答案:在BOSS直聘“我的”页面点击“竞争力分析”,系统将根据简历完整度、工作经验、教育背景和技能标签等维度生成竞争力评分,并提供简历质量、技能匹配度、求职意向契合度及活跃度建议。通过优化简历内容、补充量化成果与技能标签、定期更新并积极互动,可有效提升个人竞争力,增强求职成功率。 在BOSS直聘上查…

    2026年10月14日 • 用户投稿
    300
  • Caktus AI如何生成旅行攻略?目的地特色提炼

    Caktus AI如何生成旅行攻略?目的地特色提炼Caktus AI如何生成旅行攻略?目的地特色提炼Caktus AI如何生成旅行攻略?目的地特色提炼Caktus AI如何生成旅行攻略?目的地特色提炼

    caktus ai通过深度提炼目的地特色生成旅行攻略,其核心在于利用自然语言处理与深度学习技术,1. 从全球旅行博客、社交媒体、官方网站等多源数据中提取文本与图像信息;2. 运用nlp进行实体识别、语义分析和情感分析,捕捉如“重庆火锅-麻辣鲜香”、“冰岛蓝湖-温泉疗养”等地域特色;3. 将文化元素通…

    2026年10月14日 • 用户投稿
    000
  • MySQL怎样预编译SQL语句 预处理语句防注入实战

    MySQL怎样预编译SQL语句 预处理语句防注入实战MySQL怎样预编译SQL语句 预处理语句防注入实战MySQL怎样预编译SQL语句 预处理语句防注入实战MySQL怎样预编译SQL语句 预处理语句防注入实战

    预编译sql语句能有效防止sql注入并提高执行效率。其核心原理是将sql结构固定,通过占位符填充数据,使数据仅作为参数传递而非拼接至sql语句中,从而避免恶意输入被解析为可执行代码。相比直接执行sql,预处理语句只需解析和编译一次,后续执行复用该模板,减少重复开销。1. 预处理语句提升安全性,防止注…

    2026年10月14日 • 用户投稿
    100
  • 各种手机处理器性能排行榜2025 全品牌手机性能处理器前十名推荐

    各种手机处理器性能排行榜2025 全品牌手机性能处理器前十名推荐各种手机处理器性能排行榜2025 全品牌手机性能处理器前十名推荐各种手机处理器性能排行榜2025 全品牌手机性能处理器前十名推荐各种手机处理器性能排行榜2025 全品牌手机性能处理器前十名推荐

    2025年全品牌手机性能处理器前十名分别是:1.联发科天玑9400 ,2.苹果A18 Pro,3.高通骁龙8至尊版,4.联发科天玑9300,5.高通骁龙8 Gen4,6.三星Exynos 2500,7.苹果A18 Bionic,8.华为麒麟9100,9.联发科天玑9200 ,10.高通骁龙7  Ge…

    2026年10月14日 • 用户投稿
    000
  • 2025高端智能电动窗帘品牌厂家推荐:科创者(KCZ)强实力撬动市场!

    2025高端智能电动窗帘品牌厂家推荐:科创者(KCZ)强实力撬动市场!2025高端智能电动窗帘品牌厂家推荐:科创者(KCZ)强实力撬动市场!2025高端智能电动窗帘品牌厂家推荐:科创者(KCZ)强实力撬动市场!2025高端智能电动窗帘品牌厂家推荐:科创者(KCZ)强实力撬动市场!

    全屋智能家居热潮持续升温,电动窗帘作为智慧家居生态中的关键组成部分,正迎来前所未有的发展机遇。从“尝鲜体验”到“日常标配”,其市场体量不断扩张,2024年国内电动窗帘市场规模已正式迈过百亿门槛。然而,在繁荣表象之下,技术升级、用户需求多样化与市场竞争白热化并存,行业正处于深度调整与突破的关键阶段。其…

    2026年10月14日 • 用户投稿
    400
  • Laravel多对多关联?多对多关系怎样定义?

    Laravel多对多关联?多对多关系怎样定义?Laravel多对多关联?多对多关系怎样定义?Laravel多对多关联?多对多关系怎样定义?Laravel多对多关联?多对多关系怎样定义?

    Laravel多对多关联通过枢纽表实现,需创建两个模型表及中间表(如role_user),在模型中使用belongsToMany方法定义关系,并可借助withPivot处理枢纽表额外字段,配合attach、detach、sync和toggle方法高效操作关联数据。 Laravel的多对多关联,说白了…

    2026年10月14日 • 用户投稿
    400
  • Laravel模型查找失败?异常如何处理?

    Laravel模型查找失败?异常如何处理?Laravel模型查找失败?异常如何处理?Laravel模型查找失败?异常如何处理?Laravel模型查找失败?异常如何处理?

    Laravel模型查找失败的处理核心是区分预期与非预期情况:若数据不存在属正常逻辑,则通过find或first返回null并做条件判断;若数据必须存在,则使用findOrFail或firstOrFail抛出ModelNotFoundException,交由异常处理器统一返回404响应。对于null值…

    2026年10月14日 • 用户投稿
    300
  • 大模型在不同领域的召回测试中有哪些表现

    大模型在不同领域的召回测试中有哪些表现大模型在不同领域的召回测试中有哪些表现大模型在不同领域的召回测试中有哪些表现大模型在不同领域的召回测试中有哪些表现

    大模型在不同领域的召回测试表现各有特点:1. 医疗领域:Mixtral准确率62.0%,优于专业模型,但存在知识更新滞后等问题,KAG在医疗问答准确率达90%以上。2. 金融领域:奇富科技模型在贷后场景召回率96.3%,准确率98.8%,实现全程零人工干预。3. 教育领域:猿辅导接入大模型后,AI解…

    2026年10月14日 • 用户投稿
    100
  • Laravel授权机制?权限策略如何定义?

    Laravel授权机制?权限策略如何定义?Laravel授权机制?权限策略如何定义?Laravel授权机制?权限策略如何定义?Laravel授权机制?权限策略如何定义?

    Laravel授权机制通过Gates和Policies实现权限控制,Gates适用于全局、非模型相关的权限检查,而Policies则用于封装特定模型的权限逻辑,提升代码可维护性。 Laravel的授权机制,简单来说,就是一套让你能精细控制用户在应用中“能做什么”和“不能做什么”的系统。它不是简单地判…

    2026年10月14日 • 用户投稿
    100
  • SpringBoot项目启动失败:DataSource配置缺少url属性怎么办?

    SpringBoot项目启动失败:DataSource配置缺少url属性怎么办?SpringBoot项目启动失败:DataSource配置缺少url属性怎么办?SpringBoot项目启动失败:DataSource配置缺少url属性怎么办?SpringBoot项目启动失败:DataSource配置缺少url属性怎么办?

    SpringBoot项目启动失败:DataSource配置缺少URL属性的解决方案 在使用Spring Boot、Eclipse和MyBatis进行开发时,经常会遇到项目启动失败,并提示“failed to configure a datasource: ‘url’ attr…

    2026年10月14日 • 用户投稿
    100
  • win10麦克风加强怎么开启_win10麦克风音量加强开启方法

    win10麦克风加强怎么开启_win10麦克风音量加强开启方法win10麦克风加强怎么开启_win10麦克风音量加强开启方法win10麦克风加强怎么开启_win10麦克风音量加强开启方法win10麦克风加强怎么开启_win10麦克风音量加强开启方法

    1、通过Windows 10声音设置启用麦克风增强至+20.0 dB可提升输入音量;2、在麦克风属性中开启噪声抑制与自动增益控制以优化音频输入;3、修改注册表特定键值解除驱动对增益的限制;4、使用Voicemeeter Banana等第三方工具进行高级增益调节与虚拟路由配置,全面提升麦克风灵敏度与通…

    2026年10月14日 • 用户投稿
    300

发表回复

登录后才能评论
关注微信