java - log4j 中的 sys:ls.logs 是什么意思?
问题描述
我正在阅读 log4j 文档和 logstash log4j 配置,我不知道 ${sys:ls.logs} 的意思。
${sys:ls.logs} 是什么意思?我怎样才能在运行时或操作系统环境中改变这个有价值的东西。我使用 Ubuntu 操作系统。
解决方案
sys 是 Log4j 2 中的系统属性。Log4j 支持语法 ${prefix:name} ,其中前缀标识告诉 Log4j 应该在特定上下文中评估变量名称。查看Log4j 2文档
sys :系统属性。格式为 ${sys:some.property} 和 ${sys:some.property:-default_value}。
您可以在配置中引用属性,Log4j 将直接替换它们,或者 Log4j 将它们传递给将动态解析它们的底层组件。属性来自配置文件中定义的值、系统属性、环境变量、ThreadContext Map 和事件中存在的数据。
系统属性通常在应用程序外部定义,您可以通过Lookup访问它们。您可以通过添加自己的查找插件来进一步自定义属性提供程序。也可以使用语法在查找中指定默认属性${lookupName:key:-defaultValue}
。
<Appenders>
<File name="ApplicationLog" fileName="${sys:logPath:-/var/logs}/app.log"/>
</Appenders>
ls.logs
此外,在 Log4j 1.x 中使用名为 的系统属性查找,语法为${ls.logs}
. 在 Log4j 2 中,语法为${sys:ls.logs}
.
该属性可以在应用程序源中设置,也可以在启动服务时作为参数设置。例如,在 Logstash 源中的 Logstash 的DefaultDeprecationLoggerTest 中,它设置build/logs
为如下:
@Before
public void setUp() throws IOException {
System.setProperty("log4j.configurationFile", CONFIG);
System.setProperty("ls.log.format", "plain");
System.setProperty("ls.logs", "build/logs");
LogTestUtils.deleteLogFile("logstash-deprecation.log");
}
推荐阅读
- excel - 将一个字符串与一列字符串进行比较并返回匹配 ID Excel
- php - PHP Slim RESTful API - 两个表连接嵌套 JSON
- excel - 需要 IF,Vlookup 或 =INT(MAX 可以锻炼我需要的褶皱数量
- php - php readline字符串到数组
- html - 将输入和文本区域与标签垂直对齐
- java - 使用“double”方法将文本文件读入 Java
- haskell - Haskell中任意数量列表的并集
- r - 如何对具有先前观察到的值的数据中的关系进行排序,该值首先出现在多个排序列中
- reactjs - 反应路由器多个goBack
- java - 如何检查列表字符串变量的元素