当前位置: 首页 > 知识库问答 >
问题:

Quarkus日志事务id

左康安
2023-03-14

我的应用程序有几个JAX-RSAPI,所有这些API都得到一个事务id作为头,我们有没有办法将事务id访问到JBoss记录器中?我们尝试了mdc,但没有帮助。基本上,我正在寻找有效的方式来添加事务id到每个日志。

共有1个答案

宓诚
2023-03-14

您没有提到实际如何进行日志记录:在代码中显式地使用log.语句,或者一些CDI/JAXRS拦截器······

实现所需功能的一种常见方法是在边界层上定义一个过滤器/拦截器(在您的例子中是JAX-RS),它提取相关的请求数据并将其存储在日志记录程序在执行该请求期间可用的上下文中。这正是JAX-RS过滤器和MDC的作用。

一个简单的例子:

@Provider
public class TransactionLoggingFilter implements ContainerRequestFilter, ContainerResponseFilter {

    @Context
    HttpServerRequest request;

    @Override
    public void filter(ContainerRequestContext context) {
        MDC.put("transactionId", request.getHeader("transactionId"));
    }

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
        MDC.remove("transactionId");
    }
}

要在日志中实际打印MDC中的值,您需要通过以下方式修改Quarkus日志格式:

quarkus.log.console.format=%d{HH:mm:ss} %-5p %X{transactionId} [%c{2.}] (%t) %s%e%n

您可以使用表达式%x{var_name}访问任何MDC作用域var。

 类似资料:
  • 问题内容: 如何在SQL SERVER 2005中释放事务日志空间: 我有事务日志大小= 70 GB,并且在不同的驱动器中有四个事务日志1,2,3,4。通过DBCC SQLPERF(LOGSPACE),我发现事务日志已满(使用100%),并且我想释放事务日志中的空间,并且我不想备份T日志。我没有空间备份事务日志。而且我的数据库处于复制状态。 如何释放交易日志或 我只能有一个日志文件,而不是3个事务

  • 问题内容: 我为Spring配置了事务支持。有什么方法可以记录交易记录,只是为了确保我正确设置了所有内容?在日志中显示是查看正在发生的事情的好方法。 问题答案: 在您的文档中(对于其他记录器或log4j的xml格式,请检查文档) 根据您的事务管理器,您可以设置spring框架的日志记录级别,以便为您提供有关事务的更多信息。例如,如果使用,您可以设置 (这是您的交易经理的软件包),以及 如果还不够,

  • 作为调试的一部分,我需要跟踪pod创建和删除等事件。在我的kubernetes设置中,我使用的是日志记录级别5。

  • 我想更改quarkus应用程序的日志级别,在我可以找到任何引用的地方,它都指向application.properties文件。 我需要任何额外的扩展来让它工作吗? 我读过这个问题,但对我不起作用。我真的不知道,我从Quarkus bootstrap创建了一个简单的应用程序,但我仍然有同样的行为。

  • MySQL服务日志 MySQL服务日志分类 慢查询日志 查看慢查询日志的定义 启动和设置慢查询日志 二进制日志 MySQL服务日志分类 错误日志(error):记录MySQL服务进程mysqld在启动/关闭或者运行过程中遇到的错误信息; 查询日志(query log),分为以下两类: 普通日志(general query log):记录客户端连接信息和执行的SQL语句信息( 生产环境中一般不开启