2013-05-15 6 views
0

로깅 용 프로젝트에서 log4j2를 사용하려고합니다. log4j2.xml이라는 이름의 conf 파일은 java 프로젝트 바로 아래에 있으며 클래스 패스에 필요한 jar 파일이 있습니다. 로깅이 아래의 conf 파일과 올바르게 작동하는지 테스트 할 때 정보 메시지가 표시 될 것으로 예상되지만 오류 메시지 만 표시됩니다. 아무도이 문제가 뭔지 알고 있습니까?log4j 2.0 구성 정보

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <properties> 
     <property name="servicename">m2mp_checker</property> 
     <property name="patternTime">%d{yyyy-MM-dd HH:mm:ss.SSS} | %-5.5p | %-10.10t | %-20.20C:%-5.5L | %msg%n</property> 
     <property name="patternNoTime">%-5.5p | %-10.10t | %-20.20C:%-5.5L | %msg%n</property> 
    </properties> 
    <appenders> 
     <Console name="console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="${patternTime}"/> 
     </Console> 
    </appenders> 
    <loggers> 
     <root level="INFO"> 
      <appender-ref ref="console"/> 
     </root> 
    </loggers> 
</configuration> 

자바 코드 :

package test; 

import org.apache.logging.log4j.LogManager; 
import org.apache.logging.log4j.Logger; 

import com.jcraft.jsch.*; 

/** 
* @author : T12888 
*/ 
public class Tester { 
    private static final Logger logger = LogManager.getLogger(Tester.class); 

    public static void main(String[] args) { 

     String username = "aa"; 
     String host = "aa"; 
     String pass = "aa"; 
     String khfile = "/home/testuser/.ssh/known_hosts"; 
     String identityfile = "/home/testuser/.ssh/id_rsa"; 

     JSch jsch = null; 
     Session session = null; 
     Channel channel = null; 
     ChannelSftp c = null; 

     try { 

      java.util.Properties config = new java.util.Properties(); 
      config.put("StrictHostKeyChecking", "no"); 

      jsch = new JSch(); 
      session = jsch.getSession(username, host, 22); 
      session.setPassword(pass); 
      session.setConfig(config); 
      session.connect(); 

      channel = session.openChannel("sftp"); 
      channel.connect(); 
      c = (ChannelSftp) channel; 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     try { 
      logger.info("info"); 
      String fsrc = "abc.xml", fdest = "abc.xml"; 
      c.put(fsrc, fdest); 
      c.get(fdest, "/tmp/testfile.bin"); 
     } catch (Exception e) { 
      logger.error("error"); 
      e.printStackTrace(); 
     } 
     finally{ 
      c.disconnect(); 
      session.disconnect(); 
     } 
    } 
} 

출력 :

11:27:45.873 [main] ERROR test.Tester - error 
+0

소스 코드를 업로드하십시오. 여기서 u는 logger.info ("info")를 호출합니다. –

+0

오케이. 그런데 디버깅 할 때 logger.info 라인은 logger.isInfoEnabled()가 false를 반환하기 때문에 작동한다는 것을 알 수 있습니다. – cacert

+0

좋습니다, 로그 파일에 메시지를 쓰고 있습니까? –

답변

0

나는이 같은 ${patternTime}

설정을 설정하는 것을 잊지 생각 : System.setProperty("patternTime", Your_PatternTime);

+0

log4j2.xml의 속성 부분에서 이미 % d {yyyy-MM-dd HH : mm : ss.SSS}의 patterntime을 정의했습니다. % -5.5p | % -10.10t | % -20.20C : % - 5.5L | % msg % n. – cacert

+0

그러면이 행은 무엇을합니까?

0

마지막으로 해결되었습니다. 문제는 log4j가 내 구성 파일 (log4j2.xml)을로드하지 않고 로거를 오류 수준으로 설정하는 기본 구성을 사용하고 있다는 것입니다. 답변 해 주셔서 감사합니다.