2013-05-15 53 views
0

我想在一個項目中使用log4j2進行日誌記錄。我的conf文件名爲log4j2.xml,它直接在java項目下,並且在classpath中有必要的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> 

java代碼:

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

上傳你的源代碼,你調用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),並使用默認配置,它將記錄器設置爲錯誤級別,我猜。感謝您的回覆。