2017-11-13 2 views
0

I erstellt getrennte einfache Log-Klasse: log.java) zBWie überschreiben Sie den Namen der Protokolldatei in log4j2.xml mit einer neuen?

import org.apache.log4j.LogManager; 
public class Logs { 
    private static final org.apache.log4j.Logger logger= LogManager.getLogger(Logs.class); 
    public static org.apache.log4j.Logger Log() { 
     return logger; 
    } 
} 

und mit folgenden log4j2.xml Datei

<Configuration status="INFO"> 
    <Properties> 
     <Property name="log-path">logs</Property> 
    </Properties> 

    <Appenders> 
     <Console name="Console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
     </Console> 
     <File name="MyFile" fileName="${log-path}/Log${date:yyyy-MM-dd-HH-mm-ss}.log" immediateFlush="false" append="false"> 
      <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
     </File> 
    </Appenders> 
    <Loggers> 
     <Root level="INFO"> 
      <AppenderRef ref="Console" /> 
      <AppenderRef ref="MyFile" /> 
     </Root> 
    </Loggers> 
</Configuration> 

Frage: Ich möchte sagen, Dateinamen testbest.log passieren einloggen zu meiner Protokollklasse, so dass beim Protokollieren der Protokolldateiname testbest.log statt Log $ {date: jjjj-MM-dd-HH-mm-ss} .log

Wie kann ich das erreichen?

Antwort

0

log4j.xml

<Configuration status="INFO"> 
    <Properties> 
     <Property name="log-path">logs</Property> 
    </Properties> 

    <Appenders> 
     <Console name="Console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
     </Console> 
     <File name="MyFile" fileName="${log-path}/${sys:log-file-name}" immediateFlush="false" append="false"> 
      <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
     </File> 
    </Appenders> 
    <Loggers> 
     <Root level="INFO"> 
      <AppenderRef ref="Console" /> 
      <AppenderRef ref="MyFile" /> 
     </Root> 
    </Loggers> 
</Configuration> 

Sie Dateinamen als VM-Argument angeben können, wenn

java -Dlog-file-name="testbest.log" 

Start Oder Sie können es programmatisch als Systemeigenschaft definieren

System.setProperty("log-file-name", "testbest.log"); 
+0

Vielen Dank Anton. – nepsks

Verwandte Themen