2016-08-01 1 views
0

에 로그인 나는이 메소드를 호출 다른 파일에 로그인 할 수 있습니다 :의 log4j : log4j를 사용하여 다른 파일

Logger.getLogger("test") 

테스트 log4j.properties에 정의 된 펜더입니다. log4j2를 사용하여 다른 파일에 어떻게 로그인합니까? 이건 내 설정 파일 내가 어디에서 로그인하는 프로그램을 선택합니다 :

<Properties> 
    <Property name="log-path">C:/logs</Property> 
</Properties> 

<Loggers> 
    <Logger name="it.mypackage" level="debug" additivity="false"> 
     <appender-ref ref="file" level="debug" /> 
     <appender-ref ref="file2" level="error" /> 
    </Logger> 
</Loggers> 

<Appenders> 

    <!-- file.log --> 
    <RollingFile name="file" fileName="${log-path}/file.log" filePattern="${log-path}/file-%d{yyyy-MM-dd}.log"> 
     <PatternLayout> 
      <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern> 
     </PatternLayout> 
     <Policies> 
      <TimeBasedTriggeringPolicy interval="1" modulate="true" /> 
     </Policies> 
    </RollingFile> 

    <!-- file2.log --> 
    <RollingFile name="file2" fileName="${log-path}/file2.log" filePattern="${log-path}/file2-%d{yyyy-MM-dd}.log"> 
     <PatternLayout> 
      <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern> 
     </PatternLayout> 
     <Policies> 
      <TimeBasedTriggeringPolicy interval="1" modulate="true" /> 
     </Policies> 
    </RollingFile> 
</Appenders> 

[솔루션] 아 예, 로거 누락 :

<Properties> 
    <Property name="log-path">C:/logs</Property> 
</Properties> 

<Loggers> 
    <Logger name="logger1" level="debug" additivity="false"> 
     <appender-ref ref="file" level="debug" /> 
    </Logger> 
    <Logger name="logger2" level="debug" additivity="false"> 
     <appender-ref ref="file" level="debug" /> 
     <appender-ref ref="file2" level="error" /> 
    </Logger> 
</Loggers> 

<Appenders> 

    <!-- file.log --> 
    <RollingFile name="file" fileName="${log-path}/file.log" filePattern="${log-path}/file-%d{yyyy-MM-dd}.log"> 
     <PatternLayout> 
      <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern> 
     </PatternLayout> 
     <Policies> 
      <TimeBasedTriggeringPolicy interval="1" modulate="true" /> 
     </Policies> 
    </RollingFile> 

    <!-- file2.log --> 
    <RollingFile name="file2" fileName="${log-path}/file2.log" filePattern="${log-path}/file2-%d{yyyy-MM-dd}.log"> 
     <PatternLayout> 
      <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern> 
     </PatternLayout> 
     <Policies> 
      <TimeBasedTriggeringPolicy interval="1" modulate="true" /> 
     </Policies> 
    </RollingFile> 
</Appenders> 

다음과 같이 로거를 선택할 수 있습니다.

private static Logger logger = LogManager.getLogger("logger1"); 
+0

당신은 오직 하나의 로거 만 가지고 있습니다. 그래서 정말 선택의 여지가 없습니다. 나는 무엇인가 놓치고 있습니까? – Fildor

+0

나는 여기에서 찾을 수있는 모든 대답을 생각한다 : https://logging.apache.org/log4j/2.0/faq.html –

답변

1

이 같은 구성의 나머지 부분을 계속하지만, 로거 부분 수정하는 경우 :

: 이제

<Loggers> 
    <Logger name="logger1" level="debug" additivity="false"> 
    <appender-ref ref="file" level="debug" /> 
    </Logger> 
    <Logger name="logger2" level="debug" additivity="false"> 
    <appender-ref ref="file2" level="error" /> 
    </Logger> 
</Loggers> 

을, 당신은 이름 로거를 얻어서 코드에서 펜더를 선택할 수 있습니다

Logger logger1 = LogManager.getLogger("logger1");