gpt4 book ai didi

java - 我注意到 log4j2.xml 中某些属性前面的前缀 'sd:'——它们代表什么?

转载 作者:行者123 更新时间:2023-11-30 10:21:47 25 4
gpt4 key购买 nike

我需要使用加密 key (AES) 配置 Log4j 2.x 日志记录。我在 log4j2.xml 中有这部分:

<Encryption keyId="${sd:encryptionKeyId}" key="${sd:encryptionKey}">
....
</Encryption>

出于测试目的,我使用在线生成工具生成 AES key 并将其直接放在那里而不是 ${sd:encryptionKey}。它起作用了,即。我没有得到任何异常。

然后我想把键移到属性上,像这样:

<Property name="sd:encryptionKey">---my key here---</Property>

它没有用。我删除了 sd: 前缀,它再次起作用。

我的问题是:这个前缀代表什么?直接在此文件中将 key 设置为属性是正确的方法吗?

最佳答案

${sd:... 前缀用于 Log4j2 的内置 Structured Data lookup .

来自手册:

The StructuredDataLookup is very similar to the MapLookup in that it will retrieve values from StructuredDataMessages.

Log4j2 提供其他查找,因此您可以从系统属性、环境变量、Log4j2 线程上下文映射等中获取项目。

构建 custom lookup 也很容易从您的应用程序获取数据。

重要提示:查找需要美元和花括号才能工作。

为了您要实现的目标,我会像您在问题中所做的那样定义一个简单的属性,但也许将 key 放在环境变量中以防止其他人通过阅读日志配置发现 key .

定义环境变量是特定于操作系统的,但在 Linux 中,您可以在 ~/profile 中进行定义,在 Windows 中,您可以转到“控制面板”>“系统”>“高级”>“环境变量”。

然后使用 environment variable lookup允许 Log4j2 获取值。

<Property name="encryptionKey">${env:MY_AES_KEY}</Property>

关于java - 我注意到 log4j2.xml 中某些属性前面的前缀 'sd:'——它们代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47634727/

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