gpt4 book ai didi

java - Log4J2 属性替换 - 默认

转载 作者:IT老高 更新时间:2023-10-28 20:43:53 25 4
gpt4 key购买 nike

我只是想知道是否有任何方法可以为 LOG4J 中的属性替换提供默认值?

我想在 java 系统属性中传递文件路径,然后将其与“${env:mySystemProperty}”一起使用。但是如果开发者忘记设置这个属性怎么办?然后我想在 log4j2.xml 中定义一些有意义的默认值。

知道如何实现这个功能吗?

编辑:

env 替换对我不起作用:

standalone.conf

-DoauthLoginLogPath=/path/oauth2.log

log4j2.xml

<Appender type="File" name="File" fileName="${env:oauthLoginLogPath}" immediateFlush="true">
<Appender type="File" name="File" fileName="${sys:oauthLoginLogPath}" immediateFlush="true">

我可以在 wildfly 控制台中看到该属性,我重新启动了服务器但我无法完成它。

最佳答案

默认属性映射

http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution您可以在配置文件中指定默认属性映射。采用这种形式:

<Configuration status="debug">
<Properties>
<Property name="oauthLoginLogPath">default/location/of/oauth2.log</Property>
</Properties>
...
<Appenders>
<Appender type="File" name="File" fileName="${sys:oauthLoginLogPath}">
....
</Configuration

然后,如果您使用系统属性 -DoauthLoginLogPath=/path/oauth2.log 启动您的应用程序,则会首先在系统属性中查找 File appender fileName 值,但如果失败,它将回退到 log4j2.xml 配置文件顶部的 Properties 部分中定义的属性。

内联

第二种方法是内联提供默认值:

<Appender type="File" name="File" fileName="${sys:oauthLoginLogPath:-default/location/of/oauth2.log}">

通常所有 Log4j2 查找都遵循以下模式:${type:key:-defaultValue}.

环境与系统

顺便说一下,env 前缀是用于环境变量的(如 Windows 上的 %PATH%),与 Java 系统属性的 sys 无关。另见 http://logging.apache.org/log4j/2.x/manual/lookups.html

关于java - Log4J2 属性替换 - 默认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22028399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com