2014-01-31 2 views
0

У меня проблема при экспорте в исполняемый банку.другой log4j.xml при экспорте jar из eclipse

Я использую Maven и SLF4J с log4j

Мой pom.xml

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-log4j12</artifactId> 
    <version>1.7.2</version> 
    <scope>runtime</scope> 
</dependency> 

Я добавил log4j.xml в/SRC/Java/основной (тот же, что в сгенерированном целевой папке):

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> 

<appender name="FILE" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="/media/dlm/log/dlm.log" /> 
    <param name="Threshold" value="INFO" /> 
    <param name="Append" value="false" /> 
    <param name="MaxFileSize" value="10MB" /> 
    <param name="MaxBackupIndex" value="1" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}:%L] %m %n" /> 
    </layout> 
</appender> 

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out" /> 
    <param name="Threshold" value="INFO" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" 
      value="%d{ABSOLUTE} %-5p [%c{1}:%L] %m %n" /> 
    </layout> 
</appender> 


<root> 
    <level value="INFO" /> 
    <appender-ref ref="FILE" /> 
</root> 

</log4j:configuration> 

Но когда я экспортировать из затмение в log4j.xml изменяется для следующего:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> 

<appender name="FILE" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="/tmp/dlm/log4j.log" /> 
    <param name="Threshold" value="INFO" /> 
    <param name="Append" value="false" /> 
    <param name="MaxFileSize" value="1MB" /> 
    <param name="MaxBackupIndex" value="1" /> 

    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d %-5p %X{service} %X{user} [%c] %m%n" /> 
    </layout> 
</appender> 

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out" /> 
    <param name="Threshold" value="ERROR" /> 

    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" 
      value="%d{ABSOLUTE} %-5p %X{service} %X{user} [%c{1}] %m%n" /> 
    </layout> 
</appender> 


<root> 
    <level value="INFO" /> 
    <appender-ref ref="CONSOLE" /> 
</root> 
</log4j:configuration> 

Я попытался использовать файл log4j.properties, как показано here, но ничего.

Заранее благодарю ваши ответы.

+0

Почему вы используете экспорт Eclipse и почему бы вам не позволить Maven построить ваш артефакт с помощью 'mvn package'? –

+0

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

+0

Вместо использования терминала вы можете щелкнуть правой кнопкой мыши проект Eclipse, выбрать «Запустить как» с помощью «Maven install» или «Maven build ...». После первого запуска вы можете добавить настройку в «Выполнить» -> «Организовать избранное», чтобы она вставлялась в меню. –

ответ

0

Благодаря Петру я понял, что при запуске aclicacition с eclipse я использовал опции eclipse, а не сам maven для создания своего приложения. Вот почему, вероятно, изменится log4j.xml. Следующее решение не позволяет решить, почему это происходит, но разрешите проблему и дайте мне правильный способ создания моего приложения с использованием 100% maven.

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

1.-Включают XML файлы:

<build> 
... 
<!-- RECURSOS --> 
<resources> 
    <resource> 
    <directory>src/main/java</directory> 
    <includes> 
     <include>**/*.fxml</include> 
     <include>log4j.xml</include> 
    </includes> 
    </resource> 
</resources> 
... 
</build> 

2.- Исполняемые баночка (у меня есть 3 различных основных классов в одном проекте):

<plugin> 
<artifactId>maven-assembly-plugin</artifactId> 
<configuration> 
    <archive> 
    <manifest> 
     <mainClass>${class.main}</mainClass> 
    </manifest> 
    </archive> 
    <descriptorRefs> 
    <descriptorRef>jar-with-dependencies</descriptorRef> 
    </descriptorRefs> 
</configuration> 
</plugin> 

3.- Добавить профили для выбора основной класс:

<profiles> 
<!-- DLM ANALOG --> 
<profile> 
    <id>dlmdesktopanalog</id> 
    <properties>   
    <class.main>cl.icpdas.dlm.desktop.fx.main.analog.DataLoggerAnalogManager</class.main> 
    </properties> 
</profile> 
<!-- DLM DIGITAL --> 
<profile> 
    <id>dlmdesktopdigital</id> 
    <properties> 
    <class.main>cl.icpdas.dlm.desktop.fx.main.digital.DataLoggerDigitalManager</class.main> 
    </properties> 
</profile> 
<!-- DLM EXTRACTOR --> 
<profile> 
    <id>dlmdesktopextractor</id> 
    <properties> 
    <class.main>cl.icpdas.dlm.desktop.fx.main.extractor.DataLoggerExtractorManager</class.main> 
    </properties> 
</profile> 
</profiles> 

Наконец, я использовал следующие цели, чтобы сделать свою исполняемую банку.

mvn clean package assembly:single -e -P dlmdesktopanalog 

Во всяком случае, если кто-то знает, где затмение набора log4j.xml и другие варианты, когда сделать exejutable банки или что является reasson, почему он меняет log4j.xml ответов Wellcome как комментарий.

Смежные вопросы