Пожалуйста, инициализируйте систему log4j должным образом
Вот сообщение об ошибке -
log4j:WARN No appenders could be found for logger (SerialPortUtil).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Вот вызов в классе SerialPortUtil
-
private static final Logger log = Logger.getLogger(SerialPortUtil.class.getSimpleName());
.
.
.
log.info("Serial port " + port.getName() + " is available");
Вот содержимое моего файла log4j.properties -
log4j.rootLogger=DebugAppender
#Debug logging
log4j.appender.DebugAppender=org.apache.log4j.RollingFileAppender
log4j.appender.DebugAppender.Threshold=DEBUG
log4j.appender.DebugAppender.File=activityLog.log
log4j.appender.DebugAppender.MaxFileSize=200KB
log4j.appender.DebugAppender.MaxBackupIndex=5
log4j.appender.DebugAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.DebugAppender.layout.ConversionPattern=%d{DATE} %t - %m%n
И файл свойства находится в пути к классам.
Все выглядит правильно для меня, так что происходит? Должен ли порог DEBUG
также записывать INFO
logging?
Ответы
Ответ 1
Хорошо, поэтому я заработал, изменив это
log4j.rootLogger=DebugAppender
к этому
log4j.rootLogger=DEBUG, DebugAppender
Очевидно, вам нужно сначала указать уровень ведения журнала на rootLogger
? Прошу прощения, если я потратил впустую любое время.
Кроме того, я решил ответить на собственный вопрос, потому что это не проблема с classpath.
Ответ 2
Из ссылки в сообщении об ошибке:
Это происходит, когда файлы конфигурации по умолчанию log4j.properties и log4j.xml не могут быть найдены, и приложение не выполняет явной конфигурации. log4j использует Thread.getContextClassLoader(). getResource() для поиска файлов конфигурации по умолчанию и напрямую не проверяет файловую систему. Знание соответствующего места для размещения log4j.properties или log4j.xml требует понимания стратегии поиска используемого загрузчика классов. log4j не предоставляет конфигурацию по умолчанию, поскольку вывод в консоль или файловая система может быть запрещен в некоторых средах. Также см. Часто задаваемые вопросы. Почему log4j не может найти мои свойства в приложении J2EE или WAR?
Файл конфигурации не найден. Вы используете xml или файл свойств?
Кроме того, используйте logback!
Ответ 3
Если вы столкнулись с ошибкой/предупреждением при запуске программы, использующей log4j, решение должно добавить log4j.properties, который можно увидеть загрузчиком классов. Обычно это в папке "src" вашего Java-проекта:
Добавьте в файл следующее содержимое
log4j.rootLogger=INFO, stdout
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{ABSOLUTE} %5p %c{1}:%L - %m%n
Ответ 4
Попробуйте сделать что-то вроде следующего в основном:
public static void main(String[] args) {
PropertyConfigurator.configure(args[0]);
//... your code
вам нужно указать log4j, какой должна быть его конфигурация.
Ответ 5
Добавьте код
BasicConfigurator.configure();
в вашем статическом основном классе, как показано ниже.
Примечание:
добавьте "\ hadoop-2.7.1\share\hadoop\common\lib\commons-logging-1.1.3.jar и
\ hadoop-2.7.1\share\hadoop\common\lib\log4j-1.2.17.jar "
как внешние ссылки
import org.apache.log4j.BasicConfigurator;
public class ViewCountDriver extends Configured implements Tool{
public static void main(String[]args) throws Exception{
BasicConfigurator.configure();
int exitcode = ToolRunner.run(new ViewCountDriver(), args);
System.exit(exitcode);
}
}
Ответ 6
Чтобы добавить к @Gevorg, если у вас есть аналогичная ситуация, выполняющая Spark локально, поместите файл log4j.properties в папку с именами ресурсов в основной папке.
Ответ 7
Что сработало для меня, так это создать файл свойств log4j (вы можете найти много примеров по сети) и поместить его в папку свойств в каталоге проекта (создайте эту папку, если не exicts). Щелкните правой кнопкой мыши папку и Build Path->Use as Source Folder
.
Надеюсь, что это поможет!
Ответ 8
Исправление для меня заключалось в том, чтобы поместить "log4j.properties" в папку "src". Он не работал в моей папке пакета, и он должен быть одним из корней источника. Добавление его в путь сборки, который затем перемещает его в "Справочные библиотеки", также не сработало.
Повторить: поместите log4j.properties в корень вашей папки src.
Мои файлы log4j.properties имеют следующий контент, который работает с последней версией Spring Tool Suite, основанной на Eclipse.
# Configure logging for testing: optionally with log file
#log4j.rootLogger=INFO, stdout
log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%