如何使用spring boot 1.3.6.RELEASE使log4j2可以通过环境进行配置

Rog*_*nco 8 properties log4j2 spring-boot

我想根据我的application.properties从log4j2.xml文件中更改一些属性,因此例如定义一些属性,然后在log4j2中替换那些作为参数的属性.

我跑了不同的方法,但我仍然没有做对的事情.我想根据环境(DEV,QA或PROD)有不同的配置.有人可以指导我如何实现这一目标吗?

所以,我想在我的房产里有这个

#Place holders for log4j2.xml file
log.file.path=/opt/tomcat/logs
log.file.name=dummydummy
log.file.size=100 MB
log.level=DEBUG
Run Code Online (Sandbox Code Playgroud)

请在下面找到我的log4j2示例...

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <Properties>
        <Property name="PID">????</Property>
        <property name="name">my-log</property>
    </Properties>
    <Appenders>
        <RollingFile name="file" fileName="${log.file.path}${log.file}.log"
            filePattern="${log.file.path}${log.file}-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout
                pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID} --- [%t] %c{1}(%M:%L) : %m%n%wEx" />
            <Policies>
                <TimeBasedTriggeringPolicy /><!-- Rotated everyday -->
                <SizeBasedTriggeringPolicy size="${log.file.size}" /> <!-- Or every 100 MB -->
            </Policies>
        </RollingFile>
        <Console name="Console" target="SYSTEM_OUT" follow="true">
            <PatternLayout
                pattern="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%c{1}(%M:%L)}{cyan} %clr{:}{faint} %m%n%wEx" />
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="org.hibernate.validator.internal.util.Version"
            level="warn" />
        <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
        <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
        <Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />
        <Logger name="org.springframework.web" level="error" />

        <Root level="${log.level}">
            <AppenderRef ref="Console" />
            <AppenderRef ref="file" />
        </Root>
    </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

谢谢

asc*_*sch 10

properties查询元素允许从log4j配置中的外部属性文件中引用属性.对于你的例子,它应该是这样的:

  1. 文件env.properties包含以下属性:

    log.file.path=/opt/tomcat/logs
    log.file.name=dummydummy
    log.file.size=100 MB
    log.level=DEBUG
    
    Run Code Online (Sandbox Code Playgroud)

属性查找应定义为log4j2.xml的属性:

<Configuration>  
  <Properties>  
      <property name="log.file.path">${bundle:env:log.file.path}</property>  
      <property name="log.file.name">${bundle:env:log.file.name}</property>  
      <property name="log.file.size">${bundle:env:log.file.size}</property>  
      <property name="log.level">${bundle:env:log.level}</property>   
  </Properties>  
Run Code Online (Sandbox Code Playgroud)

现在可以使用$ {property_name}表示法在appender中引用属性.每个属性引用都将使用env.properties中的实际值进行插值.

您可以在此处找到另一个属性查找示例.