前言

使用spring-boot框架开发的项目中,默认的logback格式可能默认是如下的格式:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="access." suffix=".log" pattern="%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i" %{X-Forwarded-For}i "%Dms"" resolveHosts="false"/>

假设有一种场景,我们希望能够将业务数据加入到access日志中,方便统计每个接口在用户粒度的调用量。
那么在分布式日志服务中,我们可以考虑在每行的access日志中,添加用户的id,方便直接解析到es中,在es中计算count即可。
本文主要解决access日志中添加userId的问题。

具体思路

tomcat的access日志配置介绍可以参考博文:【Tomcat Access Log配置】
在上述博文中,我们可以看到如下内容:

Access Log中也支持cookie,请求header,响应headers,Session或者其他在ServletRequest中的对象的信息。格式遵循apache语法

%{xxx}i 请求headers的信息
%{xxx}o 响应headers的信息
%{xxx}c 请求cookie的信息
%{xxx}r xxx是ServletRequest的一个属性
%{xxx}s xxx是HttpSession的一个属性

我们发现是可以给ServletRequest添加属性,打印日志的时候进行解析的。
不过使用上述的格式配置的logback-access.xml文件因为格式问题导致无法解析。
找到一篇详解logback layout配置的文章:https://blog.csdn.net/Doraemo...
可以看到需要使用%reqAttribute{XXXX}才可以。

<pattern>%i{ClientIp} %h %l %u [%t] "%r" %s %b "%i{Referer}" "%i{User-Agent}" %i{x-ssl-header} %reqAttribute{user-id}%n======%n%fullRequest%n======%n%fullResponse</pattern>

只需要在代码中进行如下设置即可

servletRequest.setAttribute("user-id", userId);

(可能写的有点抽象啊,只是为了自己记录一下,不要忘记)

spring-boot的access日志格式修改相关推荐

  1. Spring Boot + ELK搭建日志监控框架

    Spring Boot + ELK搭建日志监控框架 准备ELK三件套 ​ Elasticsearch+Logstash+Kibana ​ 下载地址:https://www.elastic.co/cn/ ...

  2. spring boot中的日志入门

    日志通常不会在需求阶段作为一个功能单独提出来,也不会在产品方案中看到它的细节.但是,这丝毫不影响它在任何一个系统中的重要地位. 报警系统与日志系统的关系 为了保证服务的高可用,发现问题一定要及时,定位 ...

  3. kong 网关日志格式修改

    kong 网关日志格式修改 kong网关默认日志在/usr/local/kong/logs,主要有access.log,admin_access.log,error.log,access.log和ng ...

  4. spring boot配置logback日志

    spring boot配置logback日志 在上一篇spring boot入门里提过,Spring Boot默认的日志打印是logback,所以配置logback日志会很简单,但是也有注意的地方. ...

  5. 【Spring Boot】Spring Boot Logging 示例 | 日志记录

    文章目录 logging.level | 设置日志级别 logging.file | 指定输出日志文件的路径和名称 logging.path | 指定输出日志文件的路径 logging.pattern ...

  6. kong 网关access.log日志格式修改

    kong网关默认日志在/usr/local/kong/logs,主要有access.log,admin_access.log,error.log,access.log和nginx的access日志类似 ...

  7. spring boot—集成log4j2日志框架

    文章目录 市场上的日志框架 spring boot日志框架关系 移除默认日志框架 切换为log4j2日志框架 市场上的日志框架   1)日志门面最常用的是slf4j   2)日志实现最常用的是logb ...

  8. spring boot—自定义logback日志配置

    自定义日志配置 spring boot2.2.4官方文档 logback中文文档    1)spring boot可以适应所有日志框架,只需在类路径下包含相应的依赖来激活各种日志系统.    2)sp ...

  9. spring boot 学习之五(日志配置)

    想直接看这里的我建议先看了我的spring boot 学习之四.因为日志的配置要用到properties. 先了解一下springBoot的日志系统然后再进行配置. springboot默认采用的是s ...

最新文章

  1. 解决笔记本集成声卡在某些情况下视频、语音没有声音
  2. 2015年十佳IDC评选结果:50强名单揭晓
  3. python读音发音器-python3 - 文本读音器
  4. boost::iostreams::example::container_source用法的测试程序
  5. python字符串内建函数_Python的字符串内建函数(字符串处理)
  6. 小米实现隔空充电技术;程序员离职小技巧;GitLab 涨价|开发者周刊
  7. Python 导入通讯录:将.csv文件转换为.vcf文件
  8. 4种方法解决鼠标反应慢(迟钝)
  9. n个人有c个魔法帽几天去掉所有的帽子
  10. matlab counter是什么意思,counter-propagating是什么意思
  11. Pytorch中torch.nn.DataParallel负载均衡问题
  12. android视频播放框架Vitamio
  13. python3 爬取今日头条文章(巧妙避开as,cp,_signature)
  14. R 语言中1 和1L的区别
  15. K8s NetworkPolicy与网络插件flannel、calico详细版
  16. unity摄像机追踪屏幕抖动的问题
  17. 【安卓开发】简单记账app功能实现开发-期末大作业个人总结
  18. 【问题解决】Invalid bound statement(not found)
  19. Python-到底啥是面向对象&面向过程?
  20. BUUCTF [FlareOn2]elfie

热门文章

  1. AI创业哪家强?6大选择给你方向
  2. 我的业务要不要用人工智能?引入AI前你需要评估的(二)
  3. 「杂谈」计算机视觉人脸图像的十几个大的应用方向,你懂了几分?
  4. ELMo:基于上下文的语言模型,5分钟构建语义搜索引擎代码实战
  5. 顶会「扩招」,一地鸡毛:ICLR2020近半数审稿人未发过相关论文
  6. 美国多个城市禁止、我国却蓬勃发展的人脸识别是什么样子?
  7. 在SAP PI中建立场景
  8. 方向:AI研究方向历史性转变!从机器学习到人类研究
  9. 史上最强GAN被谷歌超越!标注数据少用90%,造假效果却更逼真
  10. 方法论 | 产品经理的原型工作流