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

Google Spring Cloud logback-json-appender隐藏线程或日志类等信息

姜宏盛
2023-03-14

情况:

Spring Boot应用程序使用Logback进行日志记录。部署在google cloud run。Logback配置包括如下所述的CONSOLE_JSON,以便为云运行实例预配置JSON附加器。

要查看我的应用程序的日志,我正在使用Cloud Run Logs。

考虑到spring的默认日志,我在这行中写了包/类消息和其他信息。

切换到带有预配置appender的json格式,我错过了一些信息,例如带有类名或线程名的缩短包。

期望输出:

  • 以某种方式用logback覆盖消息格式,使消息包含线程和包/类信息,最好不要编写自己的appender

感谢您的帮助。

我的登录文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
  <include resource="com/google/cloud/spring/logging/logback-json-appender.xml"/>
  <include resource="org/springframework/boot/logging/logback/console-appender.xml" />

  <springProperty scope="context" name="SERVICE_NAME" source="logging.service"/>
  <springProperty scope="context" name="APP_NAME" source="logging.app"/>
  <springProperty scope="context" name="ENVIRONMENT" source="logging.environment"/>

  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight %cyan(%-5level) %logger{30} - %msg%n</pattern>
    </encoder>
</appender>
<springProfile name="npr">
    <root level="INFO">
        <appender-ref ref="CONSOLE_JSON"/>
    </root>
</springProfile>
<springProfile name="prd">
    <root level="INFO">
        <appender-ref ref="CONSOLE_JSON"/>
    </root>
</springProfile>
<springProfile name="local">
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>
 </springProfile>
</configuration>

共有1个答案

黎玺
2023-03-14

我看到两种选择。

  1. 如果我真的需要及时使用这种显示模式,请编写我自己的Appender
  2. 正如llompalles提到的,我尝试了一下GitHub问题
 类似资料:
  • 我用log4j来显示日志。。。 我使用的是xml配置,下面是log4j。我正在使用的xml: 当我执行一个主类时,我只希望在控制台中有错误日志。。但是Log4j仍然显示它的日志: 我有没有可能隐藏log4j日志? 我已尝试自行启动记录器并将液位设置为OFF,但log4j仍显示其正确的日志: 谢谢你

  • 我正在使用第三方JAR,它们在我的Java应用程序的日志文件中添加自己的日志,我不想在我的日志文件中添加那些第三方日志,因为这会使日志文件变得非常笨拙和混乱。 那些原木就像- `

  • 问题内容: 我正在使用Go语言,回声框架进行开发。 我正在设计一个记录器,我想将线程ID的等价物记录到日志中,但是我不知道一个好的方法。 例如,如果同时进行多次访问的登录处理,则它在一侧成功,而在一侧失败。通过查看失败的日志无法确定。 经过检查,Go语言中的goroutine的id存在,但我不应该得到它,最初据说goroutine在同一线程中是不同的。 如何识别线程?还是有包装将它们放入日志中?

  • 主要内容:Log4j Appender Properties配置Log4j 提供 Appender 对象,主要负责将日志消息打印到不同的目的地,例如控制台、文件、NT 事件日志、Swing 组件、JMS、远程 UNIX 系统日志守护进程、Socket套接字等。 每个 Appender 对象都有与其相关的不同属性,这些属性指定了该对象的行为。 属性 描述 layout Appender 使用 Layout 对象和与它们关联的转换模式来格式化日志信息。 targe

  • 已检查的解决方案:来自本机的意外值获取启用标记:0 我的 Logcat 仅显示以下未使用的消息,执行速度很快。 我已经检查了给定的解决方案,但它没有在logcat中隐藏任何东西。我不知道为什么这条消息只出现在一些选定的应用程序中。 有什么解决办法吗?

  • 问题内容: 封装和信息隐藏之间到底有什么区别? 好吧,我知道将字段设为私有,然后将字段的setter和getter设为封装。但是封装只是这个意思吗? 假设我有一个如下所述的课程。 现在,类IsThisEncapsulation是封装的示例吗? 现在将上述类中的“年龄”字段设为私有可以实现信息隐藏吗? 您能给我清楚的例子,以帮助我清楚地区分这些概念吗? 问题答案: 好吧,我知道将字段设为私有,然后将