我只是想知道有没有什么方法可以为log4j中的属性替换提供默认值呢?
我想在Java系统属性中传递文件路径,然后与“${env:MySystemProperty}”一起使用。但如果开发人员忘记设置此属性怎么办?那么我希望在log4j2.xml中定义一些有意义的默认值。
你知道如何实现这个功能吗?
编辑:
环境替换对我不起作用:
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控制台看到属性,我重新启动了服务器,但我无法完成它。
您可以使用相同的${sys:propName:-default}
语法。注意':-',它被称为“变量默认值定界符”。“variable default value delimiter”的默认值是:-
,就像在bash和其他*nix shell中一样。
您可以在StrSupportor类的Log4J2文档中了解更多有关这方面的信息。
若要使用相同的示例,请执行以下操作:
<Configuration status="debug">
...
<Appenders>
<Appender type="File" name="File"
fileName="${sys:oauthLoginLogPath:-default/location/of/oauth2.log}">
....
</Appenders>
</Configuration>
默认属性映射
查看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
然后,如果使用系统属性-doauthlogpath=/path/oauth2.log
启动html" target="_blank">应用程序,将首先在系统属性中查找文件appenderfilename
值,但如果失败,它将返回到log4j2.xml配置文件顶部的properties
部分中定义的属性。
内联
第二种方法是内联提供默认值:
<Appender type="File" name="File" fileName="${sys:oauthLoginLogPath:-default/location/of/oauth2.log}">
通常,所有Log4j2查找都遵循以下模式:${type:key:-defaultvalue}
。
环境与系统
顺便说一下,env
前缀用于环境变量(如Windows上的%path%),与sys
无关,后者是Java系统属性。另见http://logging.apache.org/log4j/2.x/manual/lookups.html
20.1 属性默认值 Spring Boot支持的一些库使用缓存来提高性能。例如,模板引擎会缓存已编译的模板,以避免重复解析模板文件。此外,Spring MVC可以在服务静态资源时将HTTP缓存的头部添加到响应中。 虽然缓存功能对生产环境非常有益,但在开发过程中可能会产生反作用,使您无法看到程序中刚刚做出的更改。由于这个原因,spring-boot-devtools默认会禁用那些缓存选项。 缓存选
我在哪里可以找到默认的log4j配置文件的工人和驱动程序? 1) 目前Spark正在将执行器/工作者(stdout/stderr)级别的日志记录到工作文件夹,并将驱动程序级别的日志记录到日志文件夹。 我在哪里可以找到这个配置? 我尝试将Log4j2用于spark,而不是log4j。我正在尝试获取默认属性文件,以便可以将其中的一些内容复制到log4j2属性XML。 2) 另外,是否可以修改当前正在运
本文向大家介绍C#属性的默认值,包括了C#属性的默认值的使用技巧和注意事项,需要的朋友参考一下 示例 可以使用初始化程序(C#6)设置默认值 如果它是只读的,则可以返回如下值:
我正在使用log4j2进行一个项目,我的log4j2中有一些值。可配置的属性。该项目还将包括其他组件的配置文件。理想情况下,我希望将所有配置保存在一个地方,以便能够在同一个文件中为log4j设置那些可配置的值,这样我就不会有两个不同的地方更改配置值(例如,包括环境变量)。 我在这方面找到的方法并不理想,比如让我的项目的其他部分从主配置文件中读取值,并将它们放入系统变量中,由log4j获取,因为我希
我试图在登录过程中添加用户ip验证。如果用户的ip地址不在数据库中,应用程序应该拒绝身份验证。 问题:根据下面的设置,Auth.AuthenticationProvider()并没有替换默认的DaoAuthenticationProvider,而是将UserIpAuthenticationProvider添加为列表中的第一个AuthenticationProvider。 在用户名/密码组合不正确的
我正在尝试配置tomcat 7.0.23中的RollingFile appender(带有10个日志文件的log4j2(2.0.2)。 当我将${sys:catalina.base}替换为filePattern=“c:/apache-tomcat-7.0.23/logs/app.%I.log”时,它起作用了。 这意味着无法正确解释filePattern。 如何克服这个问题而不必静态地指定日志目录?