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

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

41 голосов
/ 07 апреля 2010

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

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.

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

1012 * ТИА *

Ответы [ 9 ]

52 голосов
/ 07 апреля 2010

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

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

файла фляги

EDIT Попробуйте включить отладку log4j и сделать путь к log4j.xml полностью определенным URL. Например:

java -Dlog4j.debug -Dlog4j.configuration=file:/path/to/log4j.xml -jar ...
17 голосов
/ 13 июля 2010

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

java -jar -Dlog4j.configuration="file:d:\log4j.xml" myjar.jar
12 голосов
/ 12 декабря 2014

Для log4j2 используйте файл конфигурации параметр:

java -Dlog4j.configurationFile=/path/to/log4j2.xml -jar ...

http://logging.apache.org/log4j/2.0/manual/configuration.html

8 голосов
/ 07 апреля 2010

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

6 голосов
/ 31 августа 2012

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

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());

    }
}
1 голос
/ 29 ноября 2011

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

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

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

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

0 голосов
/ 22 сентября 2017

Самая простая конфигурация пути для `` 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
| ---- /config/log4j2.xml
| ---- MyClass.jar

Когда вы запустите свой jar-файл, он будет искать вне xar-файла файл XML.

0 голосов
/ 10 марта 2015

java -cp "путь / к / вашему / log4jxml: путь / к / вашемуjar.jar" your.package.MainClass

Файл log4j.xml в каталоге "путь / к / вашему / log4jxml" перезапишет файл log4j.xml в каталоге "путь / к / вашемуjar.jar".

Пожалуйста, обратитесь к Установка нескольких банок в classpath java .

0 голосов
/ 08 апреля 2010

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

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