выход log4j подавлен? - PullRequest
       8

выход log4j подавлен?

1 голос
/ 20 февраля 2009

Я новенький с log4j и не могу понять это. Если я установлю в log4j.configuration какой-нибудь несуществующий файл мусора, следующая программа будет работать так, как я ожидаю. Но если я этого не сделаю, то он молчит (кроме распечатки свойств):

package com.example.test;

import org.apache.log4j.*;

public class Log4jExample2 {
    final static Logger logger = Logger.getLogger("test.Log4jExample2");    

    static void kvshow(String[] karray)
    {
        for (String k : karray)
        {
            String v = System.getProperty(k);
            System.out.println(k+"="+v);
        }
    }

    public static void main(String[] args) {
        kvshow(new String[] {"log4j.configuration", "log4j.properties"});
        BasicConfigurator.configure();
        logger.debug("Hello world.");
    }

}

Вот сеанс времени выполнения:

>java -cp test-20090219.jar com.example.test.Log4jExample2
log4j.configuration=null
log4j.properties=null

>java -cp test-20090219.jar -Dlog4j.configuration=blah.cfg com.example.test.Log4jExample2
log4j.configuration=blah.cfg
log4j.properties=null
0 [main] DEBUG test.Log4jExample2  - Hello world.

Я в тупике. (опять же, нет файла с именем blah.cfg, это был самый простой способ, которым я мог заставить вещи работать) Откуда log4j получает свои инструкции?

Ответы [ 3 ]

1 голос
/ 20 февраля 2009

Хм, у меня есть лидерство ... Я просматривал руководство log4j и случайно попробовал это:

>java -Dlog4j.debug=true com.example.test.Log4jExample2
log4j: Trying to find [log4j.xml] using context classloader sun.misc.Launcher$AppClassLoader@11b86e7.
log4j: Trying to find [log4j.xml] using sun.misc.Launcher$ExtClassLoader@35ce36 class loader.
log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
log4j: Trying to find [log4j.properties] using context classloader sun.misc.Launcher$AppClassLoader@11b86e7.
log4j: Using URL [jar:file:/C:/appl/Java/jre6u10/lib/ext/bsf.jar!/log4j.properties] for automatic log4j configuration.
log4j: Reading configuration from URL jar:file:/C:/appl/Java/jre6u10/lib/ext/bsf.jar!/log4j.properties
log4j: Parsing for [root] with value=[FATAL, CONSOLE].
log4j: Level token is [FATAL].
log4j: Category root set to FATAL
log4j: Parsing appender named "CONSOLE".
log4j: Parsing layout options for "CONSOLE".
log4j: End of parsing for "CONSOLE".
log4j: Parsed "CONSOLE" options.
log4j: Finished configuring.
log4j.configuration=null
log4j.properties=null

Похоже, среда сценариев bean-файлов переопределяет меня.

Как я могу это остановить? Я хочу, чтобы JRE не вызывался явно с файлом свойств, тогда я хочу, чтобы он использовал настройки, включенные в мой файл .jar. Я попытался поместить свой собственный файл log4j.properties в корень моего файла .jar, но это не сработало.

редактировать: ага! Я думаю, что понял: мне нужно сделать System.setProperty перед первым использованием Logger.getLogger (), что-то вроде:

static
{
    System.setProperty("log4j.configuration",
    "jar:file:my_jar_file_name_here.jar!/log4j.properties");        
}
0 голосов
/ 25 июля 2013

Если вы просто заинтересованы в подавлении ошибок «Не найдено ни одного приложения для регистратора», вы можете создать новый файл в папке src , назовите его log4j.properties и заполните его

  #Set root logger level to DEBUG and its only appender to A1.
  log4j.rootLogger=WARN, A1
  #A1 is set to be a ConsoleAppender.
  log4j.appender.A1=org.apache.log4j.ConsoleAppender
  #A1 uses PatternLayout.
  log4j.appender.A1.layout=org.apache.log4j.PatternLayout
  log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

Тогда сохраните.

Обратите внимание, что это просто подавляет вышеупомянутые ошибки.

0 голосов
/ 20 февраля 2009

BasicConfigurator устанавливает значения по умолчанию для Log4J. Таким образом, при использовании BasicConfigurator чтение из файла конфигурации не выполняется. Для настройки из файла свойств используйте PropertiesConfigurator

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...