2014-12-11 4 views
1

log4j2.xml을 사용하여 로그를 만드는 프로젝트를 만들었습니다. 내 구성 파일은 내 Windows 시스템의 일식에서 실행할 때 완벽하게 작동합니다. 다음은 로그 파일을 만드는 데 사용한 구성 파일입니다.Unix 환경의 Log4j2

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Configuration status="WARN"> 
    <Properties> 
     <Property name="log-path">/home/apps/ora_fin/IGL75D/Disco/splunk/log</Property> 
    </Properties> 
    <Appenders> 
     <RollingFile fileName="${log-path}/SplunkOADC.log" filePattern="${log-path}/SplunkOADC-%d{yyyy-MM-dd}.log" name="info-log"> 
     <Filters> 
      <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/> 
      <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/> 
      <ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL"/> 
      <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/> 
     </Filters> 
      <PatternLayout> 
       <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} - %msg%n 
       </pattern> 
      </PatternLayout> 
      <Policies> 
       <TimeBasedTriggeringPolicy interval="1" modulate="true"/> 
      </Policies> 

     </RollingFile> 

     <RollingFile fileName="${log-path}/SplunkOADC-trace.log" filePattern="${log-path}/SplunkOADC-trace-%d{yyyy-MM-dd}.log" name="trace-log"> 

      <Filters> 
      <ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/> 

      <ThresholdFilter level="fatal" onMatch="ACCEPT" onMismatch="NEUTRAL"/> 
      <ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="DENY"/> 
      <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/> 
      <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/> 
      <ThresholdFilter level="FATAL" onMatch="ACCEPT" onMismatch="DENY"/> 
     </Filters> 

      <PatternLayout> 
       <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n 
       </pattern> 
      </PatternLayout> 
      <Policies> 

        <SizeBasedTriggeringPolicy size="1 MB"/> 
      </Policies> 
     </RollingFile> 
    </Appenders> 
    <Loggers> 
     <Logger level="all" name="com.aviva.uk.gi.NUProcessOSBReportDataParserPkg"> 
      <AppenderRef ref="info-log"/> 
      <AppenderRef ref="trace-log"/> 
     </Logger> 
     <Root> 
     </Root> 
    </Loggers> 
</Configuration> 

이 구성 파일 내 프로젝트의 src 폴더에 넣었으며 아무 문제없이 픽업되었습니다. 그러나 유닉스 환경에서 응용 프로그램을 배포해야하는데, 유닉스 환경에 설정 파일을 어디에 두어야 Java 클래스가 로그를 기록 할 수 있을까요 ??

감사합니다.

+0

대답이있는 웹 페이지 : http://logging.apache.org/log4j/2.x/manual/configuration.html –

+0

예 문서의 구성을 읽었습니다. XMLConfiguration을 사용하여 Java 클래스에서 구성 파일을로드 할 수 있다면 제가 알아야 할 것은 무엇입니까? –

답변

1

항상

-Dlog4j.configuration={path to file} 

이에 상관없이 환경의 작동해야 JVM 인수를 사용하는 방법에 대한 당신의 배포 방법.

+0

답변을 주셔서 감사합니다.이 인수는 어디에 추가해야합니까? –

+0

그것의 jvm 인수. https://docs.oracle.com/cd/E22289_01/html/821-1274/configuring-the-default-jvm-and-java-arguments.html –

+0

일식을 통해 vm 인수를 추가합니다. 실행 구성의 인수 탭에 있습니다. log4j2.xml에 대한 전체 경로를 제공하고 있지만 프로젝트를 실행하면 오류가 발생합니다. 원인 : java.lang.ClassNotFoundException : C : \ Users \ 460681 \ Desktop \ Splunk-LocalVersion \ NUProcessOSBReportDataParser_LocalSystem \ src \ com \ aviva \ uk \ gi \ NUProcessOSBReportDataParserPkg \ log4j2.xml –

1

가장 간단한 것은 단지의 클래스 경로에 설정 파일을 추가하는 것입니다 신청.

웹 앱의 경우 WEB-INF/classes/에 넣는 것을 의미합니다.

또는 다른 답변에서 제안 된 시스템 속성을 사용할 수 있습니다.

+0

하지만 MDB 수신기에서 메시지를 가져 오는 Java 응용 프로그램이 있습니다. 웹 응용 프로그램으로 배포 할 수 없습니다. 현재는 클래스 경로, 즉 src/log4j2.xml에 설정 파일을 저장하고 있습니다. 하지만 weblogic 서버에 응용 프로그램을 배포하면 작동이 멈 춥니 다. –