slf4j 打印traceID介绍

slf4j除了trace、debug、info、warn、error这几个日志接口外,还可以配合日志分析将数据写入日志。

在使用日志接口时我们一般这么做

Logger LOG = LoggerFactory.getLogger("LOGNAME_OR_CLASS");
if(LOG.isDebugEnabled()) {LOG.debug("log debug");}

那么 如果我们想在日志文件中打印自定义信息该怎么办呢?比如打印以下信息:

  1. 我们想在日志中体现请求用户IP地址
  2. 用户使用http客户端的user-agent
  3. 记录一次处理线程的日志跟踪编号(这个编号目的是为了查询日志方便,结合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带来的好处

  1. 如果你的系统已经上线,突然有一天老板说我们增加一些用户数据到日志里分析一下。如果没有MDC我猜此时此刻你应该处于雪崩状态。MDC恰到好处的让

    你能够实现在日志上突如其来的一些需求

  2. 如果你是个代码洁癖,封装了公司LOG的操作,并且将处理线程跟踪日志号也封装了进去,但只有使用了你封装日志工具的部分才能打印跟踪日志号,其他部

    分(比如hibernate、mybatis、httpclient等等)日志都不会体现跟踪号。当然我们可以通过linux命令来绕过这些困扰。

  3. 使代码简洁、日志风格统一

slf4j 怎么配置日志分析打印 traceID相关推荐

  1. 【mmaction2 入门教程 01】 slowfast训练配置 日志分析 测试结果分析

    目录 0 参考资料 1 GPU平台 2 训练配置(Training setting) 2.1 官网的训练配置文档 2.2 官网的时空动作检测的配置文件系统解析(Config System for Sp ...

  2. slf4j + log4j2配置日志引擎

    maven包依赖引用 <dependency><groupId>org.apache.logging.log4j</groupId><artifactId&g ...

  3. awstats linux日志分析,Linux/Centos服务器安装配置日志分析Awstats

    Awstats是用perl语言编写的web日志分析软件,可用于Apache.IIS.Nginx访问日志分析,界面友好.功能强大,支持中文显示. LAMP环境下Awstats安装:wget http:/ ...

  4. 阿里云 EDAS Java服务日志中打印调用链TraceId

    最近要搭建阿里云的日志服务SLS,收集服务日志,进行统一的搜索查询.但遇到一个问题如何在日志中打印链路的TraceId,本文章记录一下对EDAS免费的解决方法. 先看一下阿里官方文档 业务日志关联调用 ...

  5. 日志分析工具Awstats实战之Apache篇-多站点日志分析

    前面两篇都在讲述如何去部署nginx下的awstats日志分析工具,现在终于轮到apache.作为老牌的网页服务器,awstats对apache的支持非常完美,所以整个配置过程也是十分简单.因此,在这 ...

  6. iis日志字段解析 网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)

    网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置) https://www.cnblogs.com/fuqiang88/p/5870306.html 我们只能通过各种系统日志来分析网 ...

  7. java lombok logback 配置日志打印

    一.maven 引入 <dependency><groupId>org.projectlombok</groupId><artifactId>lombo ...

  8. 解决Slf4j日志不打印问题

    日志不打印的问题,很让人头疼,也是我们经常遇到的问题. 日常站点状态巡检时发现有异常日志,定位到日志位置,看其上线文自定义输出的日志时却发现,自己加的日志都没输出.排查了一下初步定位到,这个类中日志输 ...

  9. mysql配置日志老化配置_mysql中日志的配置与分析

    默认情况下,如果日志没有配置,则只记录错误日志,记录到syslog,配置文件 /etc/mysql/conf.d/mysqld_safe_syslog.cnf (ubuntu下) [mysqld_sa ...

最新文章

  1. c# html文本编辑器,C#实现简单文本编辑器
  2. ScriptManager 帮助您实现 Web 应用程序的 AJAX 功能
  3. 上周热点回顾(6.14-6.20)
  4. Linux系统调用Hook姿势总结
  5. Java_Date_01_判断两个时间相差的天数
  6. DeFi预言机Umbrella Network与BSC上去中心化杠杆交易协议WOWswap达成合作
  7. 打孔怎么定位_不粘锅是怎么制造出来的?看完工艺流程真的清楚了「精彩动图」...
  8. 商业智能改变汽车行业
  9. 自动驾驶 10-1: 3D 几何和参考系3D Geometry and Reference Frames
  10. 安装Veritas Backup Exec v20.3
  11. win7升级win10正式版_如何使用小白系统对win7升级win10操作
  12. ASP.NET 安全认证(如何运用 Form 表单认证)(转帖)
  13. Vue中的时间转换,把毫秒换算成正常时间
  14. Vue整合Markdown组件+SpringBoot文件上传+代码差异对比
  15. 基于SVD算法的电影推荐系统实验
  16. 创建图 figure figcaption
  17. houdini节点大全中文手册_【技术贴】武林秘籍在此!大咖座谈虚幻引擎制作影视动画经验!...
  18. NSCD--DNS缓存服务
  19. 计算机应用安全检查通报,Microsoft 安全通报 4092731
  20. PHONEGAP BUILD

热门文章

  1. 12月最新S-CMS学校建站系统(含小程序)
  2. 编写程序,实现猜数小游戏。
  3. RecyclerView简单使用(非常详细)
  4. 音/视频混剪【人声分离】——快速高效将视频人声和背景伴奏分离
  5. 0Day --- 简单说明和防范
  6. Android sdk 21~23 WebView加载报错
  7. python3编译器安卓版_Python编译器app
  8. 记录RTSP通过FFmpeg+nginx发布成rtmp和http-flv
  9. 华为鸿蒙4月17日,近5个交易日概念复盘讯息:华为鸿蒙概念股市走势(4月17日)...
  10. 生产监控报警一:阿里云 RDS 监控报警