Java 动态变量的log4j2默认值

Java 动态变量的log4j2默认值,java,configuration,log4j2,Java,Configuration,Log4j2,我尝试在log4j2.xml中为变量log4j.encoding定义默认值: <Properties> <Property name="log4j.encoding">ISO-8859-15</Property> </Properties> 但是,当我使用非动态变量(即${sys:log4j.encoding},请注意单个$)时,配置成功,该变量在加载配置文件时计算一次 默认值对动态变量不起作用是预期行为吗 详细信息:定义PatternLay

我尝试在log4j2.xml中为变量log4j.encoding定义默认值:

<Properties>
  <Property name="log4j.encoding">ISO-8859-15</Property>
</Properties>
但是,当我使用非动态变量(即${sys:log4j.encoding},请注意单个$)时,配置成功,该变量在加载配置文件时计算一次

默认值对动态变量不起作用是预期行为吗


详细信息:定义PatternLayout的RollingFile由多个记录器使用。每次加载一个记录器时,都应该确定文件的路径,以便每个记录器写入自己的文件。字符集是次要的,尽管我想理解错误消息,因为我有缺陷的理解可能意味着动态更改输出文件也可能失败

字符集属性不支持动态值。该属性是不可变的,在创建阵列布局时设置。您是否需要一个Appender来支持多个字符集?这是怎么回事?

我在原来的问题中增加了一个细节部分。如何知道属性是否支持动态值?
<PatternLayout charset="$${sys:log4j.encoding}" pattern="%msg%n"/>
main WARN Error while converting string [${sys:log4j.encoding}] to type [class java.nio.charset.Charset]. Using default value [null].