slf4j 怎么配置日志分析打印 traceID
slf4j 打印traceID介绍
slf4j除了trace、debug、info、warn、error这几个日志接口外,还可以配合日志分析将数据写入日志。
在使用日志接口时我们一般这么做
Logger LOG = LoggerFactory.getLogger("LOGNAME_OR_CLASS");
if(LOG.isDebugEnabled()) {LOG.debug("log debug");}
那么 如果我们想在日志文件中打印自定义信息该怎么办呢?比如打印以下信息:
- 我们想在日志中体现请求用户IP地址
- 用户使用http客户端的user-agent
- 记录一次处理线程的日志跟踪编号(这个编号目的是为了查询日志方便,结合grep命令能根据跟踪编号将本次的处理日志全部输出)
解决办法
org.slf4j.MDC我个人会用AOP或Filter或Interceptor这类工具配合使用,获得你希望输出到日志的变量并调用MDC.put(String key, String val),比如下面代码
片段第5行:
@Around(value = "execution(* com.xx.xx.facade.impl.*.*(..))", argNames="pjp")public Object validator(ProceedingJoinPoint pjp) throws Throwable {try {String traceId = TraceUtils.begin();MDC.put("mdc_trace_id", traceId);Object obj = pjp.proceed(args);return obj;} catch (Throwable e) {//TODO 处理错误} finally{TraceUtils.endTrace();}}
代码通过AOP记录了每次请求的traceId并使用变量"mdc_trace_id"记录,在日志配置文件里需要设置变量才能将"mdc_trace_id"输出到日志文件中。我以logback
配置文件为例,看日志第10行%X{mdc_trace_id}:
<``appender` `name="ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">``<``file``>${CATALINA_BASE}/logs/all.log</``file``>``<``rollingPolicy` `class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">``<!-- daily rollover -->``<``fileNamePattern``>${CATALINA_BASE}/logs/all.%d{yyyy-MM-dd}.log</``fileNamePattern``>``<!-- keep 30 days' worth of history -->``<``maxHistory``>30</``maxHistory``>``</``rollingPolicy``>``<``encoder` `charset="UTF-8">``<``pattern``>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - traceId:[%X{mdc_trace_id}] - %msg%n</``pattern``>``</``encoder``>``</``appender``>
MDC带来的好处
如果你的系统已经上线,突然有一天老板说我们增加一些用户数据到日志里分析一下。如果没有MDC我猜此时此刻你应该处于雪崩状态。MDC恰到好处的让
你能够实现在日志上突如其来的一些需求
如果你是个代码洁癖,封装了公司LOG的操作,并且将处理线程跟踪日志号也封装了进去,但只有使用了你封装日志工具的部分才能打印跟踪日志号,其他部
分(比如hibernate、mybatis、httpclient等等)日志都不会体现跟踪号。当然我们可以通过linux命令来绕过这些困扰。
使代码简洁、日志风格统一
slf4j 怎么配置日志分析打印 traceID相关推荐
- 【mmaction2 入门教程 01】 slowfast训练配置 日志分析 测试结果分析
目录 0 参考资料 1 GPU平台 2 训练配置(Training setting) 2.1 官网的训练配置文档 2.2 官网的时空动作检测的配置文件系统解析(Config System for Sp ...
- slf4j + log4j2配置日志引擎
maven包依赖引用 <dependency><groupId>org.apache.logging.log4j</groupId><artifactId&g ...
- awstats linux日志分析,Linux/Centos服务器安装配置日志分析Awstats
Awstats是用perl语言编写的web日志分析软件,可用于Apache.IIS.Nginx访问日志分析,界面友好.功能强大,支持中文显示. LAMP环境下Awstats安装:wget http:/ ...
- 阿里云 EDAS Java服务日志中打印调用链TraceId
最近要搭建阿里云的日志服务SLS,收集服务日志,进行统一的搜索查询.但遇到一个问题如何在日志中打印链路的TraceId,本文章记录一下对EDAS免费的解决方法. 先看一下阿里官方文档 业务日志关联调用 ...
- 日志分析工具Awstats实战之Apache篇-多站点日志分析
前面两篇都在讲述如何去部署nginx下的awstats日志分析工具,现在终于轮到apache.作为老牌的网页服务器,awstats对apache的支持非常完美,所以整个配置过程也是十分简单.因此,在这 ...
- iis日志字段解析 网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)
网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置) https://www.cnblogs.com/fuqiang88/p/5870306.html 我们只能通过各种系统日志来分析网 ...
- java lombok logback 配置日志打印
一.maven 引入 <dependency><groupId>org.projectlombok</groupId><artifactId>lombo ...
- 解决Slf4j日志不打印问题
日志不打印的问题,很让人头疼,也是我们经常遇到的问题. 日常站点状态巡检时发现有异常日志,定位到日志位置,看其上线文自定义输出的日志时却发现,自己加的日志都没输出.排查了一下初步定位到,这个类中日志输 ...
- mysql配置日志老化配置_mysql中日志的配置与分析
默认情况下,如果日志没有配置,则只记录错误日志,记录到syslog,配置文件 /etc/mysql/conf.d/mysqld_safe_syslog.cnf (ubuntu下) [mysqld_sa ...
最新文章
- c# html文本编辑器,C#实现简单文本编辑器
- ScriptManager 帮助您实现 Web 应用程序的 AJAX 功能
- 上周热点回顾(6.14-6.20)
- Linux系统调用Hook姿势总结
- Java_Date_01_判断两个时间相差的天数
- DeFi预言机Umbrella Network与BSC上去中心化杠杆交易协议WOWswap达成合作
- 打孔怎么定位_不粘锅是怎么制造出来的?看完工艺流程真的清楚了「精彩动图」...
- 商业智能改变汽车行业
- 自动驾驶 10-1: 3D 几何和参考系3D Geometry and Reference Frames
- 安装Veritas Backup Exec v20.3
- win7升级win10正式版_如何使用小白系统对win7升级win10操作
- ASP.NET 安全认证(如何运用 Form 表单认证)(转帖)
- Vue中的时间转换,把毫秒换算成正常时间
- Vue整合Markdown组件+SpringBoot文件上传+代码差异对比
- 基于SVD算法的电影推荐系统实验
- 创建图 figure figcaption
- houdini节点大全中文手册_【技术贴】武林秘籍在此!大咖座谈虚幻引擎制作影视动画经验!...
- NSCD--DNS缓存服务
- 计算机应用安全检查通报,Microsoft 安全通报 4092731
- PHONEGAP BUILD
热门文章
- 12月最新S-CMS学校建站系统(含小程序)
- 编写程序,实现猜数小游戏。
- RecyclerView简单使用(非常详细)
- 音/视频混剪【人声分离】——快速高效将视频人声和背景伴奏分离
- 0Day --- 简单说明和防范
- Android sdk 21~23 WebView加载报错
- python3编译器安卓版_Python编译器app
- 记录RTSP通过FFmpeg+nginx发布成rtmp和http-flv
- 华为鸿蒙4月17日,近5个交易日概念复盘讯息:华为鸿蒙概念股市走势(4月17日)...
- 生产监控报警一:阿里云 RDS 监控报警