1.引入skywalking的jar包,导入的包和agent版本一致


  1. <dependency>
  2. <groupId>org.apache.skywalking</groupId>
  3. <artifactId>apm-toolkit-trace</artifactId>
  4. <version>8.12.0</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.skywalking</groupId>
  8. <artifactId>apm-toolkit-opentracing</artifactId>
  9. <version>8.12.0</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.apache.skywalking</groupId>
  13. <artifactId>apm-toolkit-logback-1.x</artifactId>
  14. <version>8.12.0</version>
  15. </dependency>

2.修改logback.xml


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration scan="true" scanPeriod="60 seconds" debug="false">
  3. <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
  4. <!-- 日志存放路径 -->
  5. <property name="log.path" value="logs" />
  6. <!-- 日志输出格式 -->
  7. <property name="log.pattern"
  8. value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} %tid - [%method,%line] - %msg%n"/>:ss} %-5level
  9. ${springAppName:-} %thread %logger %msg%n"/>
  10. <!-- 控制台输出 -->
  11. <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
  12. <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
  13. <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
  14. <pattern>${log.pattern}</pattern>
  15. </layout>
  16. </encoder>
  17. </appender>
  18. <!-- 系统日志输出 -->
  19. <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
  20. <file>${log.path}/info.log</file>
  21. <!-- 循环政策:基于时间创建日志文件 -->
  22. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  23. <!-- 日志文件名格式 -->
  24. <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
  25. <!-- 日志最大的历史 3天 -->
  26. <maxHistory>3</maxHistory>
  27. <!--单个日志文件的最大体积-->
  28. <maxFileSize>100MB</maxFileSize>
  29. <!--控制所有归档日志文件的总大小-->
  30. <totalSizeCap>200MB</totalSizeCap>
  31. <!--是否在应用启动的时候删除历史日志-->
  32. <cleanHistoryOnStart>true</cleanHistoryOnStart>
  33. </rollingPolicy>
  34. <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
  35. <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
  36. <pattern>${log.pattern}</pattern>
  37. </layout>
  38. </encoder>
  39. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  40. <!-- 过滤的级别 -->
  41. <level>info</level>
  42. <!-- 匹配时的操作:接收(记录) -->
  43. <onMatch>ACCEPT</onMatch>
  44. <!-- 不匹配时的操作:拒绝(不记录) -->
  45. <onMismatch>DENY</onMismatch>
  46. </filter>
  47. </appender>
  48. <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
  49. <file>${log.path}/error.log</file>
  50. <!-- 循环政策:基于时间创建日志文件 -->
  51. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  52. <!-- 日志文件名格式 -->
  53. <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
  54. <!-- 日志最大的历史 1天 -->
  55. <maxHistory>3</maxHistory>
  56. <!--单个日志文件的最大体积-->
  57. <maxFileSize>100MB</maxFileSize>
  58. <!--控制所有归档日志文件的总大小-->
  59. <totalSizeCap>200MB</totalSizeCap>
  60. <!--是否在应用启动的时候删除历史日志-->
  61. <cleanHistoryOnStart>true</cleanHistoryOnStart>
  62. </rollingPolicy>
  63. <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
  64. <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
  65. <pattern>${log.pattern}</pattern>
  66. </layout>
  67. </encoder>
  68. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  69. <!-- 过滤的级别 -->
  70. <level>error</level>
  71. <!-- 匹配时的操作:接收(记录) -->
  72. <onMatch>ACCEPT</onMatch>
  73. <!-- 不匹配时的操作:拒绝(不记录) -->
  74. <onMismatch>DENY</onMismatch>
  75. </filter>
  76. </appender>
  77. <!-- 日志传输到skywalking中的appender,通过qrpc传输 -->
  78. <appender name="gpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
  79. <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
  80. <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
  81. <Pattern>${log.pattern}</Pattern>
  82. </layout>
  83. </encoder>
  84. </appender>
  85. <!--系统操作日志-->
  86. <root level="info">
  87. <appender-ref ref="file_info"/>
  88. <appender-ref ref="file_error"/>
  89. <appender-ref ref="console"/>
  90. <appender-ref ref="gpc-log" />
  91. </root>
  92. </configuration>

看到日志打印出TID则表示配置成功

3.自定义标签快速定位异常


  1. private final Tracer tracer = new SkywalkingTracer();
  2. private void setSkywalkingTagErrMsg(String msg, String code) {
  3. ActiveSpan span = tracer.activeSpan();
  4. span.setTag("error.msg", msg);
  5. span.setTag("error.code", code);
  6. }
文章知识点与官方知识档案匹配,可进一步学习相关知识
Java技能树首页概览113611 人正在系统学习中

[转帖]SkyWalking集成logback的更多相关文章

  1. Spring Boot 项目实战(二)集成 Logback

    一.前言 上篇介绍了 Spring Boot Maven 多模块项目的搭建方法以及 MyBatis 的集成.通常在调试接口或者排查问题时我们主要借助于日志,一个设计合理的日志文件配置能大大降低我们的排 ...

  2. SpringBoot系列之集成logback实现日志打印(篇二)

    SpringBoot系列之集成logback实现日志打印(篇二) 基于上篇博客SpringBoot系列之集成logback实现日志打印(篇一)之后,再写一篇博客进行补充 logback是一款开源的日志 ...

  3. springboot集成logback日志

    简介 spring boot内部使用Commons Logging来记录日志,但也保留外部接口可以让一些日志框架来进行实现,例如Java Util Logging,Log4J2还有Logback. 如 ...

  4. [转帖] VS集成Qt环境搭建

    http://blog.sina.com.cn/s/blog_a6fb6cc90101gynd.html 用了这么久的Qt,IDE一直都是VS与Creator并用(实际开发以VS为主),至于哪个更好这 ...

  5. Spring Boot 集成 logback日志

    application.properties 配置logback.xml 路径注:如果logback.xml在默认的 src/main/resources 目录下则不需要配置application.p ...

  6. springMVC集成logback日志系统

    一.项目结构 项目介绍:maven搭建的web项目,实现Java日志记录功能.其中logback.xml为日志配置文件,spring-mvc-servlet.xml为spring controller ...

  7. [转帖]SpringBoot集成redisson分布式锁

    SpringBoot集成redisson分布式锁 https://www.cnblogs.com/yangzhilong/p/7605807.html 前几天同事刚让增加上这一块东西. 百度查一下 啥 ...

  8. Springboot集成logback,控制台日志打印两次,并且是不同的线程打印的

    背景 在搭建一个新项目的时候,从公司别的项目搞了个logback-spring.xml的配置过来,修改一下启动项目的时候发现 所有的日志都输出了两次 并且来自于不同的线程,猜测是配置重复了,但是仔细检 ...

  9. SpringBoot集成logback后访问日志端点

    问题描述 使用SpringBootAdmin(sba)监控Springboot服务时,配置了logback日志框架,按天滚动生成日志,此时在sba的日志监控页面出现404,如下图所示: 解决方案 查看 ...

  10. 分布式链路追踪体验-skywalking入门使用

    背景 旁友,你的线上服务是不是偶尔来个超时,或者突然抖动一下,造成用户一堆反馈投诉.然后你费了九牛二虎之力,查了一圈圈代码和日志才总算定位到问题原因了.或者公司内部有链路追踪系统,虽然可以很轻松地通过 ...

随机推荐

  1. LeetCode DP篇(62、63、322、887)

    62. 不同路径 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中 ...

  2. 案例展示自定义C函数的实现过程

    摘要:用户在使用数据库过程中,受限于内置函数的功能,部分业务不易实现时,可以使用自定义C函数实现特殊功能.本文通过两个示例展示自定义C函数的实现过程. 前言 用户在使用数据库过程中,常常受限于内置函数 ...

  3. 带你读顶会论文丨基于溯源图的APT攻击检测

    摘要:本次分享主要是作者对APT攻击部分顶会论文阅读的阶段性总结,将从四个方面开展. 本文分享自华为云社区<[论文阅读] (10)基于溯源图的APT攻击检测安全顶会总结>,作者:eastm ...

  4. 如何用AB测试完善产品激励体系

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 用户激励体系,也称用户激励机制,是为了让用户持续使用产品,而设计的一套对应规则.在用户激励体系建立过程中,产品可以 ...

  5. Linux 创建新用户

    添加用户组[root@VipSoft ~]#groupadd admin 添加用户[root@VipSoft ~]#useradd jimmy -m -d /home/jimmy -g admin 修 ...

  6. 创建一个简单的Docker镜像

    1. 创建 Dockerfile 文件.index.html测试页面 [root@localhost docker]# vi Dockerfile FROM nginx:1.17.6 #基于 ngin ...

  7. websever

    1 在浏览器键入url,按下回车会经历如下行为 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址; 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立 TC ...

  8. 【JAVA基础】Swagger使用

    Swagger使用 刷新权限 自定标签名称

  9. Linux 安装Jupyter notebook 并开启远程访问

    一. Ubuntu下安装jupyter notebook 1. 使用Anaconda安装 conda install jupyter notebook 2. 使用pip安装 pip install j ...

  10. SCOI2005 互不侵犯 (状态压缩入门题)

    使用状态压缩,最好了解 位运算使用 SCOI2005 互不侵犯 ​ 在 \(N\times N\) 的棋盘里面放 \(K\) 个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左 ...