Приложение Java: Как заставить Log4j работать в среде Eclipse

Я приложил все усилия, чтобы настроить Eclipse и мое приложение Java для использования файла log4j.properties . Однако похоже, что он не использует файл свойств, и я не уверен, почему.

Библиотеки: slf4j-api-1.6.1, slf4j-jdk14-1.6.1

В приложении ведение журнала работает нормально. Я могу печатать информацию, предупреждения и ошибки в консоли Eclipse.

Я бы хотел изменить уровень журнала для отладки и распечатать все сообщения журнала как в консоли, так и в файле журнала.

Я создал файл log4j.properties , который выглядит следующим образом:

log4j.rootLogger=DEBUG,console,file
log4j.rootCategory=DEBUG, R, O

# Stdout
log4j.appender.O=org.apache.log4j.ConsoleAppender

# File
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=log4j.log

# Control the maximum log file size
log4j.appender.R.MaxFileSize=100KB

# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=5
log4j.appender.file.File=checkLog.log
log4j.appender.file.threshold=DEBUG

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.O.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n
log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n

Моя структура каталогов выглядит так:

My Project
--src/
----MYProject/
------*.java
--bin/
----MYProject/
------*.class
--log4j/
----log4j.properties

В Eclipse I это:

Конфигурации запуска -> Путь к классам ( tab) -> , щелкнул правой кнопкой мыши на User Entries -> Добавил "log4j" в качестве новой папки и сохранил.

Затем в своем коде я вызываю регистратор следующим образом (пример кода, демонстрирующий мой подход, поэтому он может иметь синтаксические ошибки):

package MYProject;
import org.slf4j.LoggerFactory;

public class MyClass{

  final org.slf4j.Logger test_logger = LoggerFactory.getLogger(MyClass.class);

  public MyClass(){}

  public someMethod(){
    test_logger.debug("Some Debug");
    test_logger.info("Some Info");
    test_logger.warn("Some Warning");
    test_logger.error("An Error");
  }

}

Затем я вызываю someMethod , и он выводит INFO ], ПРЕДУПРЕЖДЕНИЕ , ОШИБКА консоли Eclipse. Он не будет печатать DEBUG и не печатать в файл.

Буду признателен за любые предложения относительно того, что я делаю неправильно.

12
задан Lii 27 June 2018 в 10:16
поделиться