Подтвердить что ты не робот

Внешний файл log4j.xml

Я пытаюсь запустить банку с файлом log4j.xml в файловой системе за пределами банки так:

java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=log4j.xml argToJar1 argToJar2

Я также пробовал:

java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=/opt/companyName/pathToJar/log4j.xml argToJar1 argToJar2

Файл log4j.xml находится в том же каталоге, что и jar (/opt/companyName/pathToJar/), но я все равно получаю стандартное предупреждающее сообщение:

log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).
log4j:WARN Please initialize the log4j system properly.

Возможно ли иметь файл конфигурации за пределами банки, или мне нужно упаковать его с помощью jar?

ТИА

4b9b3361

Ответ 1

При использовании переключателя -jar для запуска исполняемого файла jar путь к классам получается из манифеста файла jar. Переключатель -cp, если задан, игнорируется.

Ответ Джефф Стори станет самым простым решением. Кроме того, вы можете добавить атрибут Class-Path в файл jar manifest.

ИЗМЕНИТЬ Попробуйте включить отладку log4j и сделать путь к log4j.xml полным URL-адресом. Например:

java -Dlog4j.debug -Dlog4j.configuration=file:/path/to/log4j.xml -jar ...

Ответ 2

это работает:

java -jar -Dlog4j.configuration="file:d:\log4j.xml" myjar.jar

Ответ 3

Вы пробовали java -Dlog4j.configuration=/path/to/log4j.xml -jar <rest-of-args>

Ответ 4

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

myjar.jar файл содержит log4j.default.configuration

вы можете запустить свою программу с помощью этих параметров, чтобы запустить приложение

java  -jar -Dlog4j.configuration=log4j.properties  target\yourfile-v01_000_01_c002.jar

Пример кода

public static void main(String[] args) {
    String filename = System.getProperty("log4j.configuration");
    if(null==filename||filename.trim().equals("")) {
        logger.info("Using default log4j configuration log4j.default.properties.");
        logger.info("If you would like to change the default configuration please add following param before startup -Dlog4j.configuration=<log4jfile>");
        PropertyConfigurator.configure( Main.class.getResourceAsStream("/log4j.default.properties"));
    } else {
        File file = new File(filename);
        if(!file.exists()) System.out.println("It is not possible to load the given log4j properties file :"+file.getAbsolutePath());
        else PropertyConfigurator.configure(file.getAbsolutePath());

    }
}

Ответ 6

У меня были проблемы с использованием log4j с Sun JDK и автоматической настройкой.

Вы можете использовать это:

String filename = System.getProperty("log4j.configuration");
DOMConfigurator(filename);

перед использованием Logger.

Ответ 7

"- jar" использует только путь класса внутри исполняемого jar, а -cp игнорируется. Добавление "." для пути к классам в исполняемом банке должно быть установлено значение log4j.xml.

Ответ 9

Простейшая конфигурация пути для `` log4j2 is using the статический блок setting log4j.configurationFile`:

public class MyClass {

    static {
        System.setProperty("log4j.configurationFile", "./config/log4j2.xml");
    }

    protected final transient Logger logger =  LogManager.getLogger(IDOLTracker.class);

    public static void main(String[] args) {
         logger.info("");
    }
}

Тогда структура может быть такой:

ProgramFolder
 | ---- Игры и Консоли  | ---- Игры и Консоли

Когда вы запускаете свою банку, она будет выглядеть за пределами флага для XML файла.