web-dev-qa-db-de.com

So konfigurieren Sie log4j2 mit Spring Boot nach Umgebung 1.3.6.RELEASE

Ich möchte einige Eigenschaften aus der Datei log4j2.xml in Abhängigkeit von meinen application.properties ändern. Definieren Sie also beispielsweise einige Eigenschaften und ersetzen Sie dann im log4j2 die Eigenschaften, die Parameter sind.

Ich habe verschiedene Ansätze verfolgt, aber immer noch nicht das Richtige. Ich möchte je nach Umgebung unterschiedliche Konfigurationen haben (DEV, QA oder PROD). Kann mich jemand anleiten, wie das zu erreichen ist?

Also versuche ich das in meinen Eigenschaften zu haben

#Place holders for log4j2.xml file
log.file.path=/opt/Tomcat/logs
log.file.name=dummydummy
log.file.size=100 MB
log.level=DEBUG

Hier finden Sie mein log4j2-Beispiel ...

<?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>

Vielen Dank

7
Rogelio Blanco

Mit dem Properties-Lookup-Element können Eigenschaften aus einer externen Eigenschaftendatei in der log4j-Konfiguration referenziert werden. Für Ihr Beispiel sollte es ungefähr so ​​aussehen:

  1. Eine Datei env.properties enthält die folgenden Eigenschaften:

    log.file.path=/opt/Tomcat/logs
    log.file.name=dummydummy
    log.file.size=100 MB
    log.level=DEBUG
    

Die Eigenschaften-Suche sollte als Eigenschaften der Datei log4j2.xml definiert werden:

<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>  

Jetzt können die Eigenschaften in Appendern mit der Notation $ {property_name} referenziert werden. Jede Eigenschaftsreferenz wird mit dem realen Wert aus der Datei env.properties interpoliert.

Ein weiteres Beispiel für die Suche nach Eigenschaften finden Sie hier .

8
asch

Stellen Sie sicher, dass der log4j2-Starter dem Klassenpfad hinzugefügt wurde, und entfernen Sie dann die protokollbezogenen Eigenschaften in application.properties. Spring lädt dann Ihre log4j2.xml aus dem Ressourcenordner. Auf diese Weise haben Sie die volle Kontrolle über die Protokollierung. Wenn Sie Werte ersetzen möchten, verweisen Sie auf diesen Link

Hinweis :: Wenn Sie einen Aktor in Ihrem Projekt haben, entfernen Sie den Starter des Spring Boot Loggers

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
0
rajadilipkolli