2017-03-15 2 views
1

Log4j2.xml 동적 디렉토리를 설정하고 싶습니다.동적 Log4j2 로그 파일 경로

Log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>  
    <Configuration status="WARN"> 
     <Appenders> 
      <Console name="Console"> 
       <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/> 
      </Console> 

      <RollingFile name="MyFile" fileName="${sys:logDirectory}/app.log" 
         filePattern="${sys:logDirectory}/app-%d{MM-dd-yyyy}-%i.log"> 
       <PatternLayout> 
        <Pattern>%d %p %c [%t] %m%n</Pattern> 
       </PatternLayout> 
       <Policies> 
        <TimeBasedTriggeringPolicy/> 
        <SizeBasedTriggeringPolicy size="1 MB"/> 
       </Policies> 
       <DefaultRolloverStrategy max="2000"/> 
      </RollingFile> 

     </Appenders> 

     <Loggers> 
      <Root level="DEBUG"> 
       <appender-ref ref="Console" level="INFO"/> 
       <appender-ref ref="MyFile" level="ERROR"/> 
      </Root> 
     </Loggers> 
    </Configuration> 

실행 :

public static void main(final String[] args) 
{ 
    System.setProperty("log4j.logDirectory", "C:\\debug.log"); 
    org.apache.logging.log4j.core.LoggerContext ctx = 
      (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false); 
    ctx.reconfigure(); 
    log.error("TEST"); 
} 

아웃풋 :

2017년 3월 15일 18 : 20 : 메인 27,131 오류
$ {sys : logDirectory} /app.log java.io.IOException 파일을 만들 수 없습니다.
파일 이름, 디렉토리 이름 또는 드라이브 이름의 구문이 잘못되었습니다.
--- 편집 : 독일어의 원래 오류 메시지가 있었다 : ---
(구문에 대 한 서재 Dateinamen, Verzeichnisnamen 다이 데르 Datenträgerbezeichnung IST falsch 다이.)
...

답변

0

나는 그것을 시도 나는 내가 이것을하면 나를 위해 일한다는 것을 알았다. System.setProperty ("logDirectory", "C : \ debug.log");

그래서 log4j를 제거하십시오. 귀하의 설정 진술. System.setProperty ("log4j.logDirectory", "C : \ debug.log");

+0

작동합니다. – Dominik