spring-boot的access日志格式修改
前言
使用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日志格式修改相关推荐
- Spring Boot + ELK搭建日志监控框架
Spring Boot + ELK搭建日志监控框架 准备ELK三件套 Elasticsearch+Logstash+Kibana 下载地址:https://www.elastic.co/cn/ ...
- spring boot中的日志入门
日志通常不会在需求阶段作为一个功能单独提出来,也不会在产品方案中看到它的细节.但是,这丝毫不影响它在任何一个系统中的重要地位. 报警系统与日志系统的关系 为了保证服务的高可用,发现问题一定要及时,定位 ...
- kong 网关日志格式修改
kong 网关日志格式修改 kong网关默认日志在/usr/local/kong/logs,主要有access.log,admin_access.log,error.log,access.log和ng ...
- spring boot配置logback日志
spring boot配置logback日志 在上一篇spring boot入门里提过,Spring Boot默认的日志打印是logback,所以配置logback日志会很简单,但是也有注意的地方. ...
- 【Spring Boot】Spring Boot Logging 示例 | 日志记录
文章目录 logging.level | 设置日志级别 logging.file | 指定输出日志文件的路径和名称 logging.path | 指定输出日志文件的路径 logging.pattern ...
- kong 网关access.log日志格式修改
kong网关默认日志在/usr/local/kong/logs,主要有access.log,admin_access.log,error.log,access.log和nginx的access日志类似 ...
- spring boot—集成log4j2日志框架
文章目录 市场上的日志框架 spring boot日志框架关系 移除默认日志框架 切换为log4j2日志框架 市场上的日志框架 1)日志门面最常用的是slf4j 2)日志实现最常用的是logb ...
- spring boot—自定义logback日志配置
自定义日志配置 spring boot2.2.4官方文档 logback中文文档 1)spring boot可以适应所有日志框架,只需在类路径下包含相应的依赖来激活各种日志系统. 2)sp ...
- spring boot 学习之五(日志配置)
想直接看这里的我建议先看了我的spring boot 学习之四.因为日志的配置要用到properties. 先了解一下springBoot的日志系统然后再进行配置. springboot默认采用的是s ...
最新文章
- 解决笔记本集成声卡在某些情况下视频、语音没有声音
- 2015年十佳IDC评选结果:50强名单揭晓
- python读音发音器-python3 - 文本读音器
- boost::iostreams::example::container_source用法的测试程序
- python字符串内建函数_Python的字符串内建函数(字符串处理)
- 小米实现隔空充电技术;程序员离职小技巧;GitLab 涨价|开发者周刊
- Python 导入通讯录:将.csv文件转换为.vcf文件
- 4种方法解决鼠标反应慢(迟钝)
- n个人有c个魔法帽几天去掉所有的帽子
- matlab counter是什么意思,counter-propagating是什么意思
- Pytorch中torch.nn.DataParallel负载均衡问题
- android视频播放框架Vitamio
- python3 爬取今日头条文章(巧妙避开as,cp,_signature)
- R 语言中1 和1L的区别
- K8s NetworkPolicy与网络插件flannel、calico详细版
- unity摄像机追踪屏幕抖动的问题
- 【安卓开发】简单记账app功能实现开发-期末大作业个人总结
- 【问题解决】Invalid bound statement(not found)
- Python-到底啥是面向对象&面向过程?
- BUUCTF [FlareOn2]elfie