当前位置: 首页 > 面试题库 >

是否有使用消息参数作为属性创建JSON对象的Logback布局?

顾乐池
2023-03-14
问题内容

我想将日志事件作为带有参数化字符串消息的JSON对象发送到Loggly。我们的项目目前有很多代码如下:

String someParameter = "1234";
logger.log("This is a log message with a parameter {}", someParameter);

我们目前正在使用Logback作为SLF4J后端,并使用Logback的JsonLayout将ILogEvent对象序列化为JSON。因此,当他们将我们的日志事件发送到Loggly时,它们看起来像这样:

{
    "message": "This is a log message with a parameter 1234",
    "level": INFO,
    ....
}

尽管这样做确实有效,但它会message为的每个值发送一个不同的字符串someParameter,这使Loggly的自动过滤器几乎无效。

相反,我希望有一个布局可以创建如下所示的JSON:

{
    "message": "This is a log message with a parameter {}",
    "level": INFO,
    "parameters": [
        "1234"
    ]
}

这种格式将使Loggly可以将所有日志事件与该消息分组This is a log message with a parameter在一起,而与的值无关someParameter

看起来Logstash的KV筛选器做了类似的事情-
是否有任何方法可以通过Logback完成此任务,而无需编写我自己的布局来执行ILogEvent对象的自定义序列化?


问题答案:

您可以使用“ 映射的诊断上下文”
为每种类型的日志消息设置一个标记,然后在进行loggly筛选时就可以对其进行过滤。

根据JsonLayout的来源,该戳记作为单独的值存储在JSON中。



 类似资料:
  • 我想将日志事件作为带有参数化字符串消息的JSON对象发送到Loggly。我们的项目目前有很多代码是这样的: 我们目前使用Logback作为SLF4J后端,使用Logback的JsonLayout将ILogEvent对象序列化为JSON。因此,当我们的日志事件发送到Loggly时,它们看起来是这样的: 虽然这确实有效,但它为的每个值发送不同的字符串,这使得Loggly的自动过滤器几乎无用。 相反,我

  • 出于业务逻辑的原因,我希望能够创建一个具有属性的对象。但我显然不能 因为是在Python中具有特殊含义的保留关键字。但是,使用或动态获取属性也存在同样的问题。我可以这样做吗,还是必须让属性名?

  • 问题内容: 在JavaScript中,声明在全局对象上创建属性: ES6引入了具有作用域范围的声明的词法作用域。 但是,这些声明是否在全局对象上创建属性? 问题答案: 语句是否在全局对象上创建属性? 根据规范,否: 全局环境记录在逻辑上是单个记录,但是它被指定为封装对象环境记录和声明性环境记录的复合记录。该对象环境记录作为其基本对象相关的全局对象境界。该全局对象是全局环境记录的GetThisBin

  • 问题内容: 我有两个servlet:第一个servlet与客户端相似,并创建了一个以调用第二个servlet。 我想发送一个特殊的错误,格式类似于JSON对象,因此我以这种方式调用sendError方法: 但是在第一个servlet中,当我读取方法错误时,我只是得到标准的HTTP消息,而不是作为字符串的json对象。 如何获取json字符串? 问题答案: 从javadoc: 服务器默认创建响应,使

  • 问题内容: 如何使用PHP实现或创建这种JSON对象? 经过几次尝试,我没有找到解决方案。例如,我尝试了这个: 问题答案:

  • 问题内容: 有人可以给我展示一种代码有效的方法,以 根据从超链接发送给它的参数在spring mvc中更改对象属性吗? 我正在修改spring petclinic示例应用程序,以便“所有者” 详细信息页面可以显示特定 “所有者”拥有的每种“宠物”的单独列表。当前,“宠物”列表是每个“所有者”的属性, 可以在jstl中作为owner.pets访问。我想要的是让我的 jstl代码能够从jstl调用ow