通过环境变量设置 Quarkus 日志记录类别级别

Posted

技术标签:

【中文标题】通过环境变量设置 Quarkus 日志记录类别级别【英文标题】:Set Quarkus Logging Category Level via Environment Variables 【发布时间】:2021-04-06 17:57:30 【问题描述】:

在 Spring 中,可以通过 environment variables 设置 Logging Category Level。我在 Quarkus 应用程序中尝试了相同的方法,并使用以下记录器声明:

package org.my.group.resteasyjackson;

public class JacksonResource 

  private static final Logger LOGGER = LoggerFactory.getLogger(JacksonResource.class);
  
  @GET
  public Set<Quark> list() 
    LOGGER.info("Hello");
    return quarks;
  

执行构建工件

QUARKUS_LOG_CATEGORY_ORG_MY_LEVEL=WARN java -jar my-artifactId-my-version-runner.jar

将在信息级别记录任何内容(因为它是默认设置),因此是“Hello”消息。

但是,插入

quarkus.log.category."org.my".level=WARN

application.properties 文件中按需要工作。此用例中的环境变量是否不适用于 Quarkus 应用程序?

【问题讨论】:

你设法让它工作了吗?我也有同样的问题。我也尝试使用“QUARKUS_LOG_CATEGORY__ORG_MY__LEVEL”之类的附加下划线作为引号,但它也无济于事。 【参考方案1】:

刚刚尝试使用 quarkus 1.13.1 并为引号添加额外的下划线似乎有效,尝试:

QUARKUS_LOG_CATEGORY__ORG_MY__LEVEL=WARN

【讨论】:

【参考方案2】:

你可以这样做:

quarkus.log.category."org.my".level=$LOG_LVL:INFO

这只是意味着:使用我的环境变量“LOG_LVL”中的日志级别,如果不存在,则使用 INFO 作为默认值。

您可以将此变量设置为 env.variable 或在启动期间将其作为系统参数传递,但我不确定作为系统参数的语法。

【讨论】:

【参考方案3】:

您应该能够像这样使用系统属性(!= 环境变量):

java -Dquarkus.log.category.\"org.my\".level=WARN ...

注意:系统属性将覆盖它们的 application.properties,quarkus.profile due to a bug 除外。

不知道环境变量是否也可以覆盖它们。也许" 需要转义。 (我发现环境变量很脆弱,我更喜欢系统属性。)

【讨论】:

Quarkus quarkus.io/guides/config-reference的优先级规则

以上是关于通过环境变量设置 Quarkus 日志记录类别级别的主要内容,如果未能解决你的问题,请参考以下文章

在 MISRA C 中设置日志级别的标准方法

log4j可加性,类别日志记录级别和追加者阈值

Quarkus 系统日志消息格式

Spring Boot - 记录日志

在 Python 记录器中使用变量控制的日志记录级别

Quarkus如何在application.properties中设置环境变量