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

在Spring boot项目中的logback xml中外部化loglevel

拓拔松
2023-03-14

我想将logback-spring.xml中的日志级别外部化如下,

<root level="${logback.loglevel}">
        <appender-ref ref="CONSOLE"/>
</root>

在我的<code>应用程序中。yml我拥有的文件:

logback:
    loglevel: WARN

但是这个值不是从Logback XML中选择的,而是以DEBUG级别运行。如果我将那里的值硬编码为WARN,则它仅以WARN级别运行。

共有3个答案

邓宜年
2023-03-14

你可以使用springProfiles。< code>logback-spring.xml示例:

<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
            </pattern>
        </encoder>
    </appender>
    <springProfile name="production">
        <root level="warn">
            <appender-ref ref="STDOUT"/>
        </root>
    </springProfile>
    <springProfile name="default,local,develop,qa">
        <root level="INFO">
            <appender-ref ref="STDOUT"/>
        </root>
    </springProfile>
</configuration>

资源文件夹:

无论您是在< code >生产中启动< code>spring,还是在任何一种情况下启动(< code >默认、本地、开发、qa),它都会使用正确的日志级别。

使用参数<code>java-jar-Dspring.profiles启动应用程序。活动=生产将日志级别设置为警告

田焕
2023-03-14

如果你想要的只是改变日志级别,那么应该遵循jccampanero答案中的方法。这是由Spring开箱即用提供的,以使开发人员的工作变得简单。

但是,如果您希望对日志记录进行更多的定制,并且希望能够灵活地将配置值从< code > application . properties 或< code>application.yml传递到您的< code>logback-spring.xml。也很简单。

例如,在application.properties中,您有此配置my.logging.level=WARN在您的logback-spring.xml中,您可以简单地通过以下方式检索它

<springProperty scope="context" name="logLevel" source="my.logging.level" defaultValue="INFO"/>

现在您可以在<code>logback spring中使用<code>logLevel</code>(如上面的springProperty标记中定义的)。xml文件如下:

<root level="${loglevel}">
        <appender-ref ref="CONSOLE"/>
</root>

希望这对您有所帮助。

羊禄
2023-03-14

似乎您试图实现的配置外部化类型是基于Spring < code > application . yml 配置文件的。

如果是这种情况,Spring Boot提供了开箱即用的不同配置属性,您可以使用这些属性来定义适当的日志记录级别,无论您使用的是底层日志记录库实现。

您可以在不同的应用程序中提供适当的配置。属性应用程序。yaml,类似于:

logging:
  level:
    root: "warn"
    org.springframework.web: "debug"
    org.hibernate: "error"

请注意,使用自定义<code>logbackSpring。xml文件是不必要的。

如果您需要更多信息,请考虑查看上述留档。

 类似资料:
  • 我是SpringMVC的新人。我试图将我的核心Maven项目添加到Spring MVC Maven项目中。它成功地构建了,我可以在“target\project.war\WEB-INF\lib”中看到相应的jar文件,但它在glassfish控制台上引发了错误。 严重:部署应用程序时出现异常 我不能添加任何maven项目或jar文件。极有可能我没有做正确的添加依赖关系。如果有人能帮我。提前谢了。

  • 在springboot应用程序中,我有一个jar,然后是一个子目录config with application。属性,applicationContext。xml和log4j。。。属性文件。 我正在尝试外部化log4j配置。application.properties是这样外部化的。 但是,当springboot运行时,它使用jar文件中的log4j配置文件。通过使用-Dlog4j.debug选

  • 我希望解析JSON,为此我下载了java JSON。从这个URL下载jar文件。我在构建路径中添加了这个 右键单击项目 构建路径- 但是导入组织。json。JSONArray给了我一个错误。当我在org停下来的时候。它给了我一些不包括json的建议。 我应该怎么做才能成功导入json包?

  • 我用SpringBoot做了一个RESTAPI项目。控制器中有各种标准方法,如get、post、put和delete。 我的目标是使我能够通过angular应用程序仅访问api调用(get调用除外)。其他方法(post、put和delete)无法从外部访问。 我试图用WebSecurityConfigureAdapter和configure函数来解决这个问题,但我没有得到它。当我第一次在pom上导

  • 本文向大家介绍SpringBoot项目在IntelliJ IDEA中如何实现热部署,包括了SpringBoot项目在IntelliJ IDEA中如何实现热部署的使用技巧和注意事项,需要的朋友参考一下 spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。 原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动更

  • 问题内容: 当我运行“清理并生成”时,仅在文件夹位于文件的同一文件夹时,才会运行正在创建的文件。 因此,如果我将jar文件移动到桌面并将该文件夹保留在该文件夹中,则jar文件将给我一个例外。 我该如何解决这个问题? 问题答案: 如果将jars复制到源代码目录中,它们将位于您的最终jar中。但是,我不确定这是否会在100%的时间内有效。 java-forum上有一篇很棒的文章,内容如下: 除了少数情