2013-05-15 2 views
0

Я пытаюсь использовать log4j2 в проекте для ведения журнала. Мой файл conf с именем log4j2.xml находится непосредственно под проектом java, и у меня есть необходимые банки в classpath. Когда я проверяю, правильно ли работает журнал, с файлом 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

Загрузите исходный код, где u вызывается logger.info («информация»); –

+0

ОК. Кстати, когда я отлаживаю, я вижу, что строка logger.info работает, однако, поскольку logger.isInfoEnabled() возвращает false, не регистрирует журнал для этого. – cacert

+0

ok, вы пишете сообщения в файле журнала? –

ответ

0

Я думаю, что вы забыли установить ${patternTime}

Установите его так: System.setProperty("patternTime", Your_PatternTime);

+0

В части свойств в log4j2.xml Я уже определил patterntime с % d {yyyy-MM-dd HH: mm: ss.SSS} | % -5,5р | % -10.10t | % -20,20oC:% - 5,5 л | % msg% n. – cacert

+0

то что делает эта линия? <Консоль name = "console" target = "SYSTEM_OUT">

0

И наконец его решение. Проблема заключалась в том, что log4j не загружал мой файл конфигурации (log4j2.xml) и использовал конфигурацию по умолчанию, которая, как я полагаю, устанавливает регистратор на уровень ошибок. Спасибо за ответы.

Смежные вопросы