Logback:多次设置同一变量

问题描述 投票:0回答:1

我正在将

logback-core
logback-classic
的版本升级到 1.5.6 (从 1.1.2 ),但现在升级后我面临的问题是我的日志文件不再被创建。

我们的 logback 配置过去是这样的:

  ...
  <property name="fileName" value="logA" />
  <include file="appender.xml"/>
  
  <property name="fileName" value="logB" />
  <include file="appender.xml"/>

  <property name="fileName" value="logC" />
  <include file="lappender.xml"/>
  ...

而appender.xml使用fileName属性,如下所示:

  <appender name="${fileName}" class="ch.qos.logback.core.FileAppender">
    <file>${fileName}.log</file>
    <Append>${fileAppending}</Append>
    <encoder>
      <pattern>...</pattern>
    </encoder>
  </appender>

这用于创建 3 个日志文件:logA、logB、logC

使用 never 版本时,我只得到一个日志文件:logC

经过一些调试后,我看到属性存储在映射中,并且看起来它们正在被解析,然后才处理实际的 xml。由于它们存储在映射中,因此在尝试创建文件之前,我最终会在属性映射中得到“fileName”:“logC”。之后,它尝试创建 3 个文件,“文件名”为“logC”。

我不太确定这是否是预期的行为(在处理配置内容之前读取并存储所有属性/变量),因为这对我来说似乎非常违反直觉。 我在官方文档中找不到任何内容,所以我的第一个问题是,这是否真的是多次设置相同属性/变量时所期望的行为?

我还尝试使用

variable
关键字与不同的
scopes
。为了安全起见,我用文件的实际内容替换了
include file
。我还通过实现
PropertyDefiner
并像这样配置它来尝试动态方法:

  <define name="fileName" class="..PropertyDefiner">
    <fileName>aFileName</fileName>
  </define>

但似乎没有什么可以像旧版本中那样工作。 我有什么做错或错过的事情吗?或者这种行为(多次使用同一个变量并在需要时重新解析)在新版本中不再可能了吗?

variables properties logback
1个回答
0
投票

看起来我的问题有一个未解决的问题:https://github.com/qos-ch/logback/issues/733

© www.soinside.com 2019 - 2024. All rights reserved.