2016-11-29 2 views
1

Я пытаюсь запустить отдельную программу Java с помощью log4j, но получать ниже во время отладки (без связанных с log4j журналы на консоли):java.lang.Class: ошибка при инициализации, свойства log4j файл в Java программы

log= {[email protected]} "java.lang.Class:ERROR in 18b4aac2" 

Может кто-нибудь, пожалуйста, сообщите, что здесь не так?

код, как показано ниже:

import org.apache.logging.log4j.LogManager; 
import org.apache.logging.log4j.core.Logger; 
import java.io.IOException; 
import java.sql.SQLException; 

public class log4jExample { 

static org.apache.logging.log4j.Logger log = LogManager.getLogger(log4jExample.class.getClass()); 

public static void main(String[] args)throws IOException,SQLException { 
    System.out.println("in main..."); 

    log.debug("Hello this is a debug message"); 
    System.out.println("in main...2.."); 
    log.info("Hello this is an info message"); 
} 

} 

И файл log4j.properties, как показано ниже, который хранится в SRC/основные/ресурсов.

log4j.rootLogger=DEBUG, stdout, file 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=C:\\test\\log4j-example.log 
log4j.appender.file.MaxFileSize=1MB 
log4j.appender.file.MaxBackupIndex=2 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

Я бегу мой Java программы с опцией VM

-Dlog4j.configurationFile=C:\MyFirstProject\src\main\resources\log4j.properties 
+0

Можете ли вы показать полную трассировку стека? – diufanman

+0

Ошибка в консоли. Ниже выход: "C: \ Program Files \ Java \ jdk1.8.0_102 \ Bin \ Java" ...... в основной ... в основной ... 2 .. Process закончил с кодом выхода 0 – psg

ответ

2

Мне кажется, что вы перепутали версии log4j. Используемый файл конфигурации использует формат log4j 1.x. Вы должны преобразовать его в формат log4j 2.x. Я попробовал вам пример, и он работает. См. Подробности ниже.

pom.xml файл

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>org.bft.</groupId> 
    <artifactId>test</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <dependencies> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-core</artifactId> 
      <version>2.7</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-api</artifactId> 
      <version>2.7</version> 
     </dependency> 
    </dependencies> 
</project> 

Re-код факторизуется

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

public class log4jExample { 

    static final Logger logger = LogManager.getLogger(log4jExample.class); 

    public static void main(String[] args) { 
     System.out.println("in main..."); 

     logger.info("Hello this is a debug message"); 
     System.out.println("in main...2.."); 
     logger.info("Hello this is an info message"); 
    } 
} 

log4j.properties файл (в формате log4j2.x)

status = error 
dest = err 
name = PropertiesConfig 

filter.threshold.type = ThresholdFilter 
filter.threshold.level = debug 

appender.console.type = Console 
appender.console.name = STDOUT 
appender.console.layout.type = PatternLayout 
appender.console.layout.pattern = %m%n 

rootLogger.level = info 
rootLogger.appenderRef.stdout.ref = STDOUT 

Выход:

in main... 
Hello this is a debug message 
in main...2.. 
Hello this is an info message 

Process finished with exit code 0 

См. Log4j docs.

+0

Спасибо Rajind. Позвольте мне попробовать. – psg

0

Это не ошибка!

Он просто говорит, что уровень вашего регистратора установлен в положение «ОШИБКА», поэтому вы не увидите сообщений, зарегистрированных на уровнях DEBUG/INFO.

Может быть, вы должны проверить, если ваша конфигурация совместима с Log4J-2.x:

https://logging.apache.org/log4j/2.x/manual/configuration.html#Properties https://logging.apache.org/log4j/2.x/manual/appenders.html#ConsoleAppender

Используйте формат XML, как правило, лучше.

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