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

在回溯Spring中无法识别控制台模式.xml

邓越泽
2023-03-14

我已经在stackoverflow上查过了,但没有找到类似的东西。

我使用具有以下依赖项的Spring boot:

spring-boot 2.2.1 with
spring-boot-starter-logging 2.2.1
logback-core 1.2.3
logback-classic 1.2.3

我想对日志输出使用自定义模式,以便在控制台上打印我的 mdc.变量。它通过应用程序属性工作

logging.level.com.mypackage=TRACE
logging.pattern.level=%d{yyyy-MM-dd HH:mm:ss} [%t] [myMdc:%X{myMdcVariable}] %-5level %logger{36} - %m%n

但是我得到了双重输入,但我无法通过应用程序属性设置可加性属性。我必须使用对数Spring.xml。看起来像这样:

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

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>

    <logger name="com.mypackage" level="TRACE" additivity="false">
        <appender-ref ref="CONSOLE"/>
    </logger>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%t] [myMdc:%X{myMdcVariable}] %-5level %logger{36} - %m%n
            </Pattern>
        </encoder>
    </appender>
</configuration>

这解决了双重输入。但该模式不用于对数输出。我可以有双重条目或没有模式,因为无法通过应用程序属性和登录Spring.xml来组合配置。我做错了什么?

共有1个答案

东郭兴学
2023-03-14

我终于发现了问题所在。我检查了默认值.xml和控制台应用程序.xml在github上,例如

https://github . com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot/src/main/resources/org/spring framework/boot/logging/log back/defaults . XML

https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot/src/main/resources/org/springframework/boot/logging/logback/console-appender.xml

解决方案是定义常量CONSOLE_LOG_PATTERN。并在导入defaults.xml和console-appender.xml之前定义它

我的工作配置文件现在看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%t] [myMdc:%X{myMdcVariable] %-5level %logger{36} - %m%n"/>

    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>

    <logger name="com.mypackage" level="TRACE" additivity="false">
        <appender-ref ref="CONSOLE"/>
    </logger>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>
                ${CONSOLE_LOG_PATTERN}
            </pattern>
        </encoder>
    </appender>

</configuration>
 类似资料:
  • 我正在使用Eclipse Version:Oxygen.3a发行版(4.7.3a)下的Python3.7.7,希望能够在Eclipse PyDev控制台中运行ipython。 虽然ipython在“Windows->首选项->PyDev->解释器->软件包”下显示为已安装 对于Eclipse中的PyDev控制台来说,它仍然是未知的: windows控制台对此表示: 任何帮助都将不胜感激!

  • 主要内容:交互模式,批处理模式,启用EchoOrientDB控制台是针对OrientDB数据库和服务器实例的Java应用程序。 OrientDB支持几种控制台模式。 交互模式 这是默认模式。 只需通过执行以下脚本(或MS Windows系统中的)来启动控制台。 确保有执行权限。 完成后,控制台已准备好接受命令。 批处理模式 要以批处理模式执行命令,请运行以下(或MS Windows系统中的)脚本,以便以分号分隔所有命令。 或者调用控制台脚本

  • 我正试图将json从ajax发送到springboot控制器,但收到错误[org.springframework.web.bind.MissingServletRequestParameterException:Required Item[]参数“myJsonString[]”不存在] 下面是我的ajax代码 下面是我的控制器 我尝试了请求参数要求false,它让块工作,但如何将ajax数据获取到

  • 我的函数每次我调用它抱怨非穷尽模式时都会抛出一个异常 并行检查的定义如下: 在应用了-Wall的GHCI中运行函数只会返回 我对哈斯克尔相当陌生,也相当困惑。我认为模式匹配与和应该解决这个问题。

  • 我是h2 DB的新手,我已经搜索了这个问题,但没有找到解决方案。我想尝试使用spring boot构建tcp服务器模式,并让其他人使用spring boot或python进行连接。以下是我的财产: 我可以连接到本地主机:8080/h2控制台,但无法登录,返回 我正在使用Spring Security性,但我的方法配置在开发模式下是空的,我不知道应该在哪里修复。。。 我的pom.xml: 和tcp服

  • 我最近接到的任务是开始构建一个新的Spring 3 MVC项目(在这方面我是新手)。在开普勒设置了大部分POC项目后,我有: 一个原型Web应用程序(HelloWorld样式),可以部署并在(外部)Tomcat7中工作。 已配置日志并报告给控制台: 但是当我进入我的代码使用类方法时(我尝试了和两种风格),Eclipse无法识别Logger实例中的方法: 键入 后 Eclipse 代码助手显示以下选