首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏抠抠空间

    日志追踪 sentry

    # 'handlers': ['console'], # 'propagate': False, 'propagate': True, # 查看sql

    92110发布于 2020-07-21
  • 来自专栏码农架构

    如何利用日志链路追踪程序执行的慢SQL

    二、添加JDBC追踪 继续前一篇文章的话题:如何利用好日志链路追踪做性能分析? ▐ SQL执行时间公式 要想处理此类问题首先的分析,SQL执行时间计算如何来划分? 所以对于程序而言可以得到粗略公式 SQL执行时间=提取数据之后时间-语法解析开始时间 ▐ 添加增加JDBC追踪 阅读过Hibernate或者MyBatis等持久化框架的应该比较了解Statement位于 :",sql)); } // ========== 记录日志 ========== @Override public ResultSet executeQuery(String ; this.sql = sql; } // ========== 记录日志 ========== @Override public ResultSet executeQuery() throws 最后日志输出使用logback组件进行日志采集 对这类问题先前有做介绍 微服务分布式架构中,如何实现日志链路跟踪? 如何利用好日志链路追踪做性能分析?

    1.2K31编辑于 2021-12-15
  • 来自专栏FreeBuf

    安全运维之日志追踪

    前言 日志在分析安全事件上很重要的一个参考依据,同样希望能够看到这篇文章的运维人员能重视起日志来。 测试简单的sql注入 1' union select 1,group_concat(column_name) from infomation_schema.columns where table_name SQL注入分析 ? 通过请求的信息,也可以看出攻击者使用了SQL注入,这条信息,也可以在日常运维,安全加固中,可以准确的找到网站的注入点,有利于运维人员的及时加固。 自动化分析工具:星图 将星图的配置设置好,将日志导入,可以看到攻击的信息很直观的显示了出来,很遗憾的是星图好久不更新了。 ? SQL注入的信息: ? 最重要的是,一定要认识日志的重要性,对日志的采集,备份工作也同样变得更加重要。毕竟有经验的攻击者都会清理自己的痕迹。

    1.4K40发布于 2018-12-24
  • 来自专栏落叶飞翔的蜗牛

    轻量级日志追踪方案——TLog

    TLog概述 TLog提供了一种最简单的方式来解决日志追踪问题,它不收集日志,也不需要另外的存储空间,它只是自动的对你的日志进行打标签,自动生成TraceId贯穿你微服务的一整条链路。 适合中小型企业以及想快速解决日志追踪问题的公司项目使用。 为此TLog适配了三大日志框架,支持自动检测适配。 支持dubbo,dubbox,spring cloud三大RPC框架,更重要的是,你的项目接入TLog,可能连十分钟就不需要 :) TLog特点 目前TLog的支持的特性如下: 通过对日志打标签完成轻量级微服务日志追踪 ,并提供自动检测,完成适配 支持dubbo,dubbox,springcloud三大RPC框架 支持日志标签的自定义模板的配置,提供多个系统级埋点标签的选择 支持异步线程的追踪,包括线程池,多级异步线程等场景 Log4j框架适配器 Log4j同步日志 ? Log4j异步日志 ? Logback框架适配器 Logback同步日志 ? Logback异步日志 ?

    5.3K20发布于 2021-03-19
  • 来自专栏Linyb极客之路

    操作日志追踪记录之MDC入门

    这使得比较难以区分不同用户所对应的日志。当需要追踪某个用户在系统中的相关日志记录时,就会变得很麻烦。   一种解决的办法是采用自定义的日志格式,把用户的信息采用某种方式编码在日志记录中。 所以针对这种问题,一般会定义好整个项目的日志格式,如果是需要追踪日志,开发人员调用统一的打印方法,在日志配置文件里面定义好相应的字段,通过MDC功能就能很好的解决问题。 使用MDC来记录日志,一来可以规范多开发下日志格式的一致性,二来可以为后续使用ELK对日志进行分析。 artifactId>slf4j-log4j12</artifactId> <version>1.7.21</version> </dependency> log4j.xml配置样例,追踪日志自定义格式主要在 MDC恰到好处的让你能够实现在日志上突如其来的一些需求 如果你是个代码洁癖,封装了公司LOG的操作,并且将处理线程跟踪日志号也封装了进去,但只有使用了你封装日志工具的部分才能打印跟踪日志号,其他部分(比如

    8.2K31发布于 2018-07-26
  • 来自专栏陶陶技术笔记

    Dubbo日志链路追踪TraceId选型

    [封面.png] 一、目的 开发排查系统问题用得最多的手段就是查看系统日志,但是在分布式环境下使用日志定位问题还是比较麻烦,需要借助 全链路追踪ID 把上下文串联起来,本文主要分享基于 Spring Boot + Dubbo 框架下 日志链路追踪ID 的实现方案选型思路。 traceId 会贯穿整个请求处理过程的所有服务 每个服务/线程都拥有自己的 spanId 标识,代表请求的其中一段处理步骤 一个请求包含一个 traceId 和一个或多个 spanId 日志全链路追踪 就是在每条系统日志里都添加显示 traceId 和 spanId 信息 [日志链路追踪.png] 二、方案选型 2.1. 方案二(sleuth) Sleuth 是 Spring Cloud 的组件之一,它为 Spring Cloud 实现了一种分布式追踪解决方案,兼容Zipkin,HTrace与其他日志追踪系统 2.2.1

    3.4K11发布于 2020-09-26
  • 来自专栏Danny的专栏

    分布式日志调用链追踪

    二、分布式日志调用链追踪介绍 要解决上面的问题,可以在请求入口(比如上图中的网关模块gateway,甚至web/h5/app都可以)针对每一个请求生成一个requestId,后面整个执行链路中都带着这个 当出现问题之后,在任意模块根据关键字找出requestId,如果相关模块部署在同一台机器上,可以利用tail -f 日志文件1.log 日志文件2.log 日志文件3.log |grep 'requestId 的值'之类的方式查看调用链路的日志,比如查看一个用户登录时,在gateway、business、user模块打印的日志: ? 三、分布式日志调用链追踪实现 以上只是一个把分布式日志“串”起来的一个思路,技术架构、部署方式不同的项目,具体实现方式肯定也不同。 这时business模块在打印日志时(无论是配置的AOP,还是嵌入在代码里的日志),都可以直接从ThreadLocal中获取requestId。

    1.7K10发布于 2019-02-25
  • 来自专栏陶陶技术笔记

    Dubbo日志链路追踪TraceId选型

    链路追踪ID 一、目的 开发排查系统问题用得最多的手段就是查看系统日志,但是在分布式环境下使用日志定位问题还是比较麻烦,需要借助 全链路追踪ID 把上下文串联起来,本文主要分享基于 Spring Boot + Dubbo 框架下 日志链路追踪ID 的实现方案选型思路。 目前大多数分布式追踪系统的思想模型都来自 Google's Dapper 论文 ? 标识,代表请求的其中一段处理步骤 一个请求包含一个 traceId 和一个或多个 spanId 「日志全链路追踪」 就是在每条系统日志里都添加显示 traceId 和 spanId 信息 ? 方案二(sleuth) Sleuth 是 Spring Cloud 的组件之一,它为 Spring Cloud 实现了一种分布式追踪解决方案,兼容Zipkin,HTrace与其他日志追踪系统 2.2.1

    1.2K31发布于 2020-09-30
  • 来自专栏深入浅出java后端

    sleuth全链路日志追踪接入实战

    CODE_CLIENT_ERROR = 400; protected static final String MESSAGE_SUCCESS = "请求成功"; } 4.返回体属性赋值 /** * 链路追踪 return traceContext.traceIdString(); } return null; } } 7.controller层使用 前端示例: 日志打印示例 : 配置完成,只要控制台打印的日志都会带上此次线程的日志【内部传递通过ThreadLocal】,包括feign调用也能查询到对应的日志【feign之间的调用通过header参数传递】 二.多线程传递

    1.4K10编辑于 2022-08-23
  • 来自专栏开源 & 技术分享

    Echo 框架:实现分布式日志追踪

    [up-55f502865c4e0f73917242daf7a5a458605.png] 介绍 通过一个完整例子,基于 Echo 框架实现分布式日志追踪。 什么是 API 日志追踪? 验证日志 两个服务的日志中,会有同样的 traceId,不同的 requestId。 我们可以通过 grep traceId 来追踪 RPC。 eb466c6e0c46538027d8b8c2efc08baa"} ... operation=/v1/greeter resCode=200 eventStatus=Ended EOE 概念 当我们没有使用例如 jaeger 调用链服务的时候,我们希望通过日志追踪分布式系统里的 rk-boot 的中间件会通过 openTelemetry 库来向日志写入 traceId 来追踪 RPC。 当启动了日志中间件,原数据中间件,调用链中间件的时候,中间件会往日志里写入如下三种 ID。 EventId 当启动了日志中间件,EventId 会自动生成。

    86440编辑于 2021-12-13
  • 来自专栏Danny的专栏

    dubbo分布式日志调用链追踪

    二、分布式日志调用链追踪介绍 要解决上面的问题,可以在请求入口(比如上图中的网关模块gateway,甚至web/h5/app都可以)针对每一个请求生成一个requestId,后面整个执行链路中都带着这个 当出现问题之后,在任意模块根据关键字找出requestId,如果相关模块部署在同一台机器上,可以利用tail -f 日志文件1.log 日志文件2.log 日志文件3.log |grep 'requestId 的值'之类的方式查看调用链路的日志,比如查看一个用户登录时,在gateway、business、user模块打印的日志: 当然有ELK的话也可以通过ELK来查看。 三、分布式日志调用链追踪实现 以上只是一个把分布式日志“串”起来的一个思路,技术架构、部署方式不同的项目,具体实现方式肯定也不同。 这时business模块在打印日志时(无论是配置的AOP,还是嵌入在代码里的日志),都可以直接从ThreadLocal中获取requestId。

    82740编辑于 2022-04-02
  • 来自专栏落叶飞翔的蜗牛

    zipkin——分布式性能追踪日志系统

    包含组件 collector 收集器 storage 存储 api 查询 webUI 界面 ZipKin数据模型 Trace:一组代表一次用户请求所包含的spans,其中根span只有一个。 Span: 一组代表一次HTTP/RPC请求所包含的annotations。 annotation:包括一个值,时间戳,主机名(留痕迹)。 几个时间 cs:客户端发起请求,标志Span的开始 sr:服务端接收到请求,并开始处理内部事务,其中sr - cs则为网络延迟和时钟抖动 ss:服务端处理完请求,返回响应内容,其中ss - sr则为服务端处理请求耗时 cr:客户端接收到服务端响应内容,标志着Span的结束,其中cr - ss则为网络延迟和时钟抖动 启动zipkin java -jar zipkin-server-2.10.1-exec.jar Demo

    84720发布于 2021-01-14
  • 来自专栏开源 & 技术分享

    Gin 框架:实现分布式日志追踪

    [up-97ffbe2a2118986ceef9b2fa4bed992db74.png] 介绍 通过一个完整例子,在基于 Gin 框架中实现分布式日志追踪。 什么是 API 日志追踪? 验证日志 两个服务的日志中,会有同样的 traceId,不同的 requestId。 我们可以通过 grep traceId 来追踪 RPC。 b2d70ab9f8207ef4a9f0c3fb1be5c22c"} ... operation=/v1/greeter resCode=200 eventStatus=Ended EOE 概念 当我们没有使用例如 jaeger 调用链服务的时候,我们希望通过日志追踪分布式系统里的 rk-boot 的中间件会通过 openTelemetry 库来向日志写入 traceId 来追踪 RPC。 当启动了日志中间件,原数据中间件,调用链中间件的时候,中间件会往日志里写入如下三种 ID。 EventId 当启动了日志中间件,EventId 会自动生成。

    2.5K60编辑于 2021-12-13
  • 来自专栏半月弧のhome

    Openstack架构下的日志链路追踪

    来向Openstack-API来申请资源调度,当云管平台向openstack发送一个HTTP请求后,Openstack会在回复的响应里添加一个request-id,使用这个request-id我们可以在日志追踪到 云管日志是我们首先进行收集和处理的日志,我讲从这开始一步步结构整个链路。 我们可以使用这个request-id去底层的各个日志中查询具体的日志信息。 [v239p3zxga.png? Openstack日志收集方案 openstack有大量日志,从各个日志间找到问题的源头是一件很麻烦的事。每个OpenStack服务发送一个带有HTTP响应的请求ID报头。 查看具体日志 点击具体的日志名,我们可以得到具体的日志信息。 image-20210317162117715.png Demo 视频内容 遇到的问题 1.

    3.3K90发布于 2021-03-18
  • 来自专栏崔哥的专栏

    Laravel 记录SQL日志

    Laravel 默认只在sql语法错误时提示完整的sql日志,但实际情况接口慢,筛选条件和预期不符等,都需要看到sql语句,通过sql语句判断问题所在 下面介绍实现方式 第一步 修改 AppServiceProvider.php /', (string) $value, $sql, 1); } $sql = sprintf('【%s】 %s ', $this->format_duration($query->time / 1000), $sql); Log::channel('sql')->debug($sql 's'; } } 第二步 修改 config/logging.php 增加sql日志开关 /** * 开启sql日志 */ 'enable_log_sql' => env('LOG_SQL_ENABLED', true), 日志默认输出到 storage/logs/laravel.log文件,为了区分开,增加以下配置 'sql'

    2.2K30编辑于 2023-01-01
  • 来自专栏奔跑的人生

    SQL 2005SQL 2008 收缩日志 清空删除大日志文件

    SQL2008 的收缩日志 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消: (SQL2005) 1 BackupLog DNName 2 no_log 3 go 4 dumptransaction DNName 5 with 6 no_log 7 go 8 USE DNName 9 DBCC SHRINKFILE (2) (SQL2008 ): 在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。 ,90GB的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内 即可完成。 普通状态下LOG和DIFF的备份即可截断日志。 此语句使用的恰当环境:当系统的日志文件异常增大或者备份LOG时间太长可能影响生产的情况下使用。

    1.4K10发布于 2019-09-10
  • YashanDB日志管理策略,便于问题追踪与调试

    本文将深入剖析YashanDB的日志管理策略,重点关注如何通过有效的日志记录来实现问题追踪与调试,以帮助开发者和DBA优化操作和增强系统稳定性。YashanDB的日志管理策略1. 日志类型与分类YashanDB的日志系统主要机制涵盖多个类别,包括但不限于:事务日志、审计日志、错误日志和慢查询日志。 慢查询日志则用于追踪执行时间较长的查询,以便优化性能。2. 日志记录机制YashanDB采用写前日志(WAL)机制记录事务操作。 数据库管理员可以配置日志的自动备份和轮换机制,确保日志不会无限制增长影响系统性能。定期清理过期或不再需要的日志,更有助于保持系统的高效运作。4. 技术建议启用并配置适当的日志级别,确保关键日志被保留以供后续分析。定期审查和清理日志文件,避免日志文件过度增长影响系统性能。使用WAL机制保证数据安全性,并充分利用事务日志进行恢复操作。

    15700编辑于 2025-07-12
  • 来自专栏销声匿迹

    WebAPI问题追踪日志记录过滤器

    公司项目比较坑爹,毕竟涉及到前后端分离、多部门协作,很多时候系统出问题,哪怕已经很清楚了,协作方依然要我们把API调用入参、响应等记录下来,而且是全记录,不光是异常调用,待调查结束后这些日志又需要卸下来 频繁在代码中加日志,去日志,一次两次还行,搞多了,不胜其烦,作为技术人,一定得偷懒。有鉴于此,做了个日志记录操作过滤器,需要时候特性标记,不要时候直接去掉。 废话不多说,直接上代码实现: ///

    /// 日志记录过滤器,主要用于跟踪问题,正常情况下不需要使用 /// public class

    75210发布于 2020-09-03
  • 来自专栏用户9257747的专栏

    微服务的日志规范及链路追踪

    -- Spring cloud 链路追踪 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth -- 设置打印sql语句配置开始,以下两者配合使用,可以优化日志的输出信息,减少一些不必要信息的输出 --> <! -- 设置java.sql包下的日志只打印DEBUG及以上级别的日志,此设置可以支持sql语句的日志打印 --> <logger name="java.<em>sql</em>" level="DEBUG" additivity -- 设置打印sql语句配置结束 --> <! /当前的时间 [%X{X-B3-TraceId},%X{X-B3-SpanId},%X{X-B3-ParentSpanId},%X{X-Span-Export}] // 本次请求sleuth用于链路追踪

    88430编辑于 2022-04-06
  • 来自专栏野生AI架构师

    基于FastAPICeleryloguru实现全链路日志追踪功能

    背景 在我们的系统里,已经记录了很多的日志,但是问题是这些日志很鸡肋,当需要定位问题的时候,根本很难区分,哪些日志是一起的,而且因为我们的系统大都是一些耗时的任务,不同请求的任务日志都交叉混在一起,更加加剧了这个问题 ; 能同时追踪FastAPI接口逻辑及Celery任务的日志。 uuid import uuid4 from loguru import logger from contextvars import ContextVar # 使用任务request_id来实现全链路日志追踪 FastAPI接口入口处,增加中间件: @app.middleware("http") async def set_logger(request: Request, call_next): # 设置日志的全链路追踪 效果 ---- 这样使用logger记录日志的时候,就会自动将相应的ID带上,记录日志的时候也原来一样,基本上实现了非侵入式的全链路日志追踪,对定位问题是大为有利。

    5.1K20编辑于 2023-08-26
领券