如何使用Logback以JSON方式登录?

2024-04-12

我是 SLF4J 和 Logback 的新手,我正在尝试记录以下 API 的每个请求和响应link https://pivotal.io/de/application-transformation-recipes/observability/request-response-logging-in-spring-boot。这是配置

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%requestURL | status code: %statusCode | bytes: %bytesSent | elapsed time: %elapsedTime | request-log: %magenta(%requestContent) | response-log: %cyan(%responseContent)</pattern>
        </encoder>
    </appender>
    <appender-ref ref="STDOUT"/>
</configuration>

目前正在打印:

GET /api/request HTTP/1.1 | status code: 200 | bytes: 599 | elapsed time: 2630 | request-log:  | response-log {"key1":"field1","key2":"field2"}

我想记录类似的内容:

{
    "url": "GET /api/request HTTP/1.1",
    "status": 200,
    "elapsed_time": 2630 ,
    "response": {
        "key1":"value1",
        "key2":"value2"
    }
}

这会起作用:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="net.logstash.logback.encoder.LogstashEncoder">
        <jsonFactoryDecorator class="JsonLogDecorator"/>
        <fieldNames>
            <timestamp>timeStamp</timestamp>
            <message>message</message>
            <logger>logger</logger>
            <thread>thread</thread>
            <level>level</level>
            <levelValue>[ignore]</levelValue>
            <version>[ignore]</version>
            <stackTrace>stackTrace</stackTrace>
        </fieldNames>
        <includeMdcKeyName>mdcKeyToInclude</includeMdcKeyName>
    </encoder>
</appender>

JsonLogDecorator 是实现的自定义类JsonFactoryDecorator.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用Logback以JSON方式登录? 的相关文章

  • 最快的高斯模糊实现

    如何以最快的速度实施高斯模糊 http en wikipedia org wiki Gaussian blur算法 我要用Java来实现它 所以GPU http en wikipedia org wiki Graphics processi
  • 使用 Spring 控制器处理错误 404

    I use ExceptionHandler处理我的网络应用程序抛出的异常 在我的例子中我的应用程序返回JSON回应HTTP status用于对客户端的错误响应 但是 我正在尝试弄清楚如何处理error 404返回与处理的类似的 JSON
  • 无法访问“不安全”java方法的java表达式语言

    我正在开发一个项目 让用户向服务器提交小 脚本 然后我将执行这些脚本 有很多脚本语言可以嵌入到Java程序中 例如mvel ognl uel clojure rhino javascript等 但是 据我所知 它们都允许脚本编写者调用Jav
  • 记录共享和映射的诊断上下文

    据我所知 其他人做了什么来解决 Commons Logging 项目 针对 NET 和 Java 不支持映射或嵌套诊断上下文这一事实 执行摘要 我们选择直接使用实现者日志框架 在我们的例子中为 log4j 长答案 您是否需要一个抽象日志框架
  • 如何在 MSSQL 中获取 CURRENT_DATE?

    我正在使用 jpa 3 o 和 Hibernate 我有一个命名查询 SELECT COUNT wt id FROM WPSTransaction wt WHERE wt createdDate gt CURRENT DATE WPSTra
  • 在java中将字符串日期转换为美国格式

    我有下面的代码 其中日期为字符串类型 我必须将其设置为美国格式 所以下面我已经展示了它 private static final SimpleDateFormat usOutputDate new SimpleDateFormat MM d
  • 如何在 HandlerInterceptorAdapter 中添加 HttpServletRequest 标头?

    我正在尝试将授权标头添加到我的请求中 作为我们切换环境时的临时解决方法 我试图在扩展 HandlerInterceptorAdapter 的拦截器中处理它 我使用 MutableHttpServletRequest 类制作here http
  • 确定序列化对象的类型

    我需要通过套接字发送消息 从用户到引擎的请求 以及从引擎到用户的响应 所以流程本质上是 serialized request Server lt network gt Client serialized response request r
  • 如何通过基本身份验证确保 Spring Cloud Eureka 服务的安全?

    我在同一主机上设置了多个尤里卡服务器实例 他们使用主机名 eureka primary secondary 和 tertiary 这些主机名在主机文件中定义为 localhost 别名 一切都工作正常 它们都是可见的 并且可以作为不同的实例
  • Java:SortedMap、TreeMap、可比较?如何使用?

    我有一个对象列表 需要根据其中一个字段的属性进行排序 我听说 SortedMap 和 Comparator 是实现此目的的最佳方法 我是否要与正在排序的类实现 Comparable 还是创建一个新类 如何实例化 SortedMap 并传入
  • 在尝试使用 GPS 之前如何检查 GPS 是否已启用

    我有以下代码 但效果不好 因为有时 GPS 需要很长时间 我该如何执行以下操作 检查GPS是否启用 如果启用了 GPS 请使用 GPS 否则请使用网络提供商 如果 GPS 时间超过 30 秒 请使用网络 我可以使用时间或 Thread sl
  • 生成 equals 和 hashcode 时忽略属性

    假设我有一个类 Customer public class Customer private String firstName private String lastName private String doNotAddMeToEqual
  • 用于层次结构树角色的 Spring Security / Java EE 解决方案

    我知道 Spring Security 非常适合标准角色和基于权限的授权 我不确定的是这种情况 系统中管理着 10 000 名员工 员工被组织成组织结构图 跨部门的谁向谁报告的树 其中一些员工是用户 这些用户仅被允许访问其职责范围内的员工
  • 正确签名的 JNLP 应用程序无法在 Java 7 中运行

    我有一个 JNLP 应用程序 由于证书过期需要更新 我有一个经过 CA 验证的新证书 我已将新证书导入到我的密钥库中 我已导入完整的证书链 我的构建文件对构建中的 jar 进行签名和时间戳
  • 拆分/标记化/扫描字符串并注意引号

    Java中是否有默认 简单的方法来分割字符串 但要注意引号或其他符号 例如 给定以下文本 There s a man that live next door in my neighborhood and he gets me down Ob
  • 删除 JFX 中选项卡后面的灰色背景

    So is there any way to remove the gray area behind the tab s 我尝试过用 CSS 来做到这一点 但没有找到方法 要设置 tabpane 标题的背景颜色 请在 CSS 文件中写入 t
  • spring data jpa复合键重复键记录插入导致更新

    我有一个具有复合键的实体 我试图通过使用 spring data jpa 存储库到 mysql 数据库来持久化它 如下所示 Embeddable public class MobileVerificationKey implements S
  • 如何使用自定义 JDK 构建 Jenkins 项目?

    我有一个常规的 Jenkins 实例 运行一些多分支管道 该实例在 JDK 11 上运行 因为 Jenkins 并不真正支持更高版本 没关系 但不好的是 我的所有管道似乎也都受到 Java 11 的限制 Jenkins 仅使用它自己也使用的
  • Java/MongoDB 按日期查询

    我将一个值作为 java util Date 存储在我的集合中 但是当我查询以获取两个特定日期之间的值时 我最终得到的值超出了范围 这是我的代码 插入 BasicDBObject object new BasicDBObject objec
  • Java中单例的其他方式[重复]

    这个问题在这里已经有答案了 只是我在考虑编写单例类的其他方法 那么这个类是否被认为是单例类呢 public class MyClass static Myclass myclass static myclass new MyClass pr

随机推荐

  • 阻止 Google Analytics 在开发环境、ASP.NET MVC 中收集数据

    我有一个 ASP NET MVC 3 应用程序 并且我已经设置了 Google 分析 问题是 每次我从 Visual Studio 运行时 Google 脚本都会开始收集数据 这当然会扭曲实际结果 阻止 Google Analytics 收
  • 本机客户端上用于 SMTP 的 Office 365 XOAUTH2 535 5.7.3 身份验证失败

    我尝试通过office 365的smtp发送邮件 我在azure中为本机客户端设置了应用程序注册并设置了权限SMTP Send 但是当我连接时 我已经能够获得令牌 但发送不起作用 在我阅读的所有其他文章中 我需要设置 https outlo
  • 无法创建类型的常量值在此上下文中仅支持基本类型或枚举类型

    我在下面的查询中收到此错误 无法创建类型的常量值API Models PersonProtocol 此上下文中仅支持基本类型或枚举类型 ppCombined下面是一个IEnumerable的对象PersonProtocolType 由 2
  • Firebase 身份验证 - 开源 Android 应用

    有没有办法Firebase 身份验证 https firebase google com docs auth gclid EAIaIQobChMIhKuIo zV4wIVhRx9Ch1VwAh7EAAYASAAEgLRrvD BwE在开源应
  • SQLAlchemy 查询 API 在提示下无法正常工作

    我正在尝试使用查询 API 创建带有 MAX EXECUTION TIME 30000 提示的 MySQL 查询 我的代码大致是 from flask sqlalchemy import SQLAlchemy class MyTable S
  • 为什么我可以转换为 NSManagedObject 但不能转换为我的实体的类型?

    我在一个新项目中使用 Core Data 的 Swift 样板代码 我的 xcdatamodeld文件定义了一个实体 Task 具有单个属性 name 我有一个Task swift文件看起来像这样 import CoreData class
  • 用于 RHEL 的 gdb-multiarch

    我正在尝试寻找方法来运行gdb 多架构RHEL 中的命令 我已经安装了用于 ARM 处理的 QEMU 模拟器 我想安装GDB进行调试 我能够安装GDB 多体系结构在 Ubuntu 中运行命令成功 sudo apt get GDB multi
  • CSS:如何使盒子内部的角变圆? [复制]

    这个问题在这里已经有答案了 有border radius属性为圆形框角 但是如何在块内圆角 例如减去圆 像这儿 http malsup com jquery corner http malsup com jquery corner 卷曲设置
  • preg_match_all() 在不同的服务器上表现不同

    下面的代码在我的 PC 上的 XAMPP 上运行完美 但在我新购买的 VPS 上不起作用 它使我的代码崩溃了 preg match all regex siU string matches PREG SET ORDER 这预计只是从 HTM
  • 如何从 Android 中的自定义 CameraView 捕获图像?

    我需要捕捉图像 from 所需部分 of the screen 捕捉图像 from camera 当时其他屏幕内容保持原样 这怎么样possible 尝试使用表面视图 for 创造动态 camera查看并设置您需要的部分 下面的代码尝试 变
  • 从 pthread 调用 sleep() 是否会使线程或进程进入睡眠状态?

    我看到有一个关于linux pthread睡眠 https stackoverflow com questions 3633089 pthread sleep linux 然而 当我在 Linux 机器上查找手册页时 我看到以下内容 概要
  • 在 Mac OS X 的 Swing 应用程序中嵌入 JRE

    我必须发布带有嵌入式 JRE 的 swing 应用程序 包含应用程序 JRE bat sh 的压缩存档可以在 Windows 和 Linux 上实现 用户下载 zip 文件 解压缩并启动应用程序 完美的 但现在 我必须为 Mac OS X
  • Angular 7 组件测试使用原始服务而不是模拟服务

    我正在尝试测试具有注入服务的组件 我想在我的测试中提供模拟服务 然而 测试使用原始服务而不是模拟服务 我知道这一点是因为我收到 没有 HttpClient 的提供程序 错误 而且我在测试中输出的原始服务中有一个 console log 我可
  • 委托不接受子类?

    我的委托似乎不接受子类 我认为一个例子是最简单的 public class A public A public class B A public B public class Program private delegate void Ca
  • 如何在 ipyparallel 客户端和远程引擎之间最好地共享静态数据?

    我在具有不同参数的循环中运行相同的模拟 每个模拟都使用 pandas DataFrame data 只能读取 不能修改 使用ipyparallel IPython并行 我可以在模拟开始之前将此DataFrame放入我视图中每个引擎的全局变量
  • 谁将高级语言转换为汇编语言

    好吧 通过计算机指令 程序的基本功能 我了解到我们用高级语言编写源代码 编译器将其转换为低级语言 机器代码 目标代码 我还了解到汇编器将汇编语言转换为机器代码 目标代码 那么我就有以下疑问 如果编译器直接将高级转换为低级 则从生成该汇编语言
  • “重置”对象变量的“Pythonic”方式?

    我认为 这里的 变量 指的是 名称 不完全确定pythonistas使用的定义 我有一个对象和一些方法 这些方法都需要并且都改变对象的变量 我怎样才能以最Pythonic和最好的方式 尊重OOP的技术 实现让方法使用对象变量 同时又保留其他
  • 嵌套表格中的长字换行

    我正在尝试总结一个很长的词 我看过这个帖子 如何防止长单词破坏我的 div https stackoverflow com questions 320184 how to prevent long words from breaking m
  • 生成谷歌地图图像[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想允许我的网站的最终用户生成谷歌地
  • 如何使用Logback以JSON方式登录?

    我是 SLF4J 和 Logback 的新手 我正在尝试记录以下 API 的每个请求和响应link https pivotal io de application transformation recipes observability r