2016-01-22 51 views
11

mam aplikację, która po uruchomieniu z Maven log4j2 to działa:konfiguracja Log4j2 Nie znaleziono podczas pracy samodzielnej aplikacji zbudował przez cień wtyczki

mvn exec:java -Dexec.args=... 

ale gdy uruchomię słoik jako samodzielna aplikacja to pokazuje błąd:

java -jar 

dziennika:

ERROR StatusLogger Unrecognized format specifier [d] 
ERROR StatusLogger Unrecognized conversion specifier [d] starting at position 16 in conversion pattern. 
ERROR StatusLogger Unrecognized format specifier [thread] 
ERROR StatusLogger Unrecognized conversion specifier [thread] starting at position 25 in conversion pattern. 
ERROR StatusLogger Unrecognized format specifier [level] 
ERROR StatusLogger Unrecognized conversion specifier [level] starting at position 35 in conversion pattern. 
ERROR StatusLogger Unrecognized format specifier [logger] 
ERROR StatusLogger Unrecognized conversion specifier [logger] starting at position 47 in conversion pattern. 
ERROR StatusLogger Unrecognized format specifier [msg] 
ERROR StatusLogger Unrecognized conversion specifier [msg] starting at position 54 in conversion pattern. 
ERROR StatusLogger Unrecognized format specifier [n] 
ERROR StatusLogger Unrecognized conversion specifier [n] starting at position 56 in conversion pattern. 
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. 
ERROR StatusLogger Unrecognized format specifier [d] 
ERROR StatusLogger Unrecognized conversion specifier [d] starting at position 16 in conversion pattern. 
ERROR StatusLogger Unrecognized format specifier [thread] 
ERROR StatusLogger Unrecognized conversion specifier [thread] starting at position 25 in conversion pattern. 
ERROR StatusLogger Unrecognized format specifier [level] 
ERROR StatusLogger Unrecognized conversion specifier [level] starting at position 35 in conversion pattern. 
ERROR StatusLogger Unrecognized format specifier [logger] 
ERROR StatusLogger Unrecognized conversion specifier [logger] starting at position 47 in conversion pattern. 
ERROR StatusLogger Unrecognized format specifier [msg] 
ERROR StatusLogger Unrecognized conversion specifier [msg] starting at position 54 in conversion pattern. 
ERROR StatusLogger Unrecognized format specifier [n] 
ERROR StatusLogger Unrecognized conversion specifier [n] starting at position 56 in conversion pattern. 

ja nie rozumiem tego błędu. To pokazuje, że plik konfiguracyjny log4j2 nie zostanie znaleziony, ale również narzekać pewnym formacie, który jest prawdopodobnie w pliku konfiguracyjnym

Moja konfiguracja to:

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="off"> 
    <Appenders> 
     <Console name="console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d [%t] %-5p - %-26.26c{1} - %m\n" /> 
     </Console> 
    </Appenders> 
    <Loggers> 
     <Root level="info"> 
      <AppenderRef ref="console" /> 
     </Root> 

     <Logger name="my.package" level="DEBUG" /> 

    </Loggers> 
</Configuration> 

i znajduje się w katalogu głównym pliku jar.

UPDATE

słoik jest tworzony przez cień Maven plugin:

 <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-shade-plugin</artifactId> 

więc zawiera on wszystkie niezbędne biblioteki (około 23 MB), a gdy ten słoik po prostu trzeba podać argumenty

+0

można podano kilka informacji o tym, jak zbudować plik jar - jest to słoik tłuszczu, lub jeśli nie, to w jaki sposób podać ścieżkę klasy kiedy go wykonać? – sfThomas

+0

Mam do czynienia z tym samym problemem podczas budowania słoika tłuszczu za pomocą "maven-assembly-plugin" możesz coś zasugerować? –

Odpowiedz

8

ok Znalazłem ten issue o tym problemie.

W skrócie, problem pojawia się, gdy klasy aplikacji są spakowane w uber jar za pomocą wtyczki maven shade. Choć dla log4j2 wersji 2.8.1 poprawka jest nadal w toku, sugerowane obejście jest aktualizacja Maven pom.xml z dodatkowych ustawień konfiguracyjnych dla cienia wtyczki następujące:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

     . . . . . 

     <build> 
      . . . . . 
      <plugins> 
       . . . . . 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-shade-plugin</artifactId> 
        <version>2.4.1</version> 
        <configuration> 
         <filters> 
          <filter> 
           <artifact>*:*</artifact> 
           <excludes> 
            <exclude>META-INF/*.SF</exclude> 
            <exclude>META-INF/*.DSA</exclude> 
            <exclude>META-INF/*.RSA</exclude> 
           </excludes> 
          </filter> 
         </filters> 
         <transformers> 
          <transformer 
            implementation="com.github.edwgiz.mavenShadePlugin.log4j2CacheTransformer.PluginsCacheFileTransformer"/> 
         </transformers> 
        </configuration> 
        <executions> 
         <execution> 
          <phase>package</phase> 
          <goals> 
           <goal>shade</goal> 
          </goals> 
         </execution> 
        </executions> 
        <dependencies> 
         <dependency> 
          <groupId>com.github.edwgiz</groupId> 
          <artifactId>maven-shade-plugin.log4j2-cachefile-transformer</artifactId> 
          <version>2.1</version> 
         </dependency> 
        </dependencies> 
       </plugin> 
       . . . . . 
      </plugins> 
     . . . . . 
     </build> 
     . . . . . 
     <pluginRepositories> 
      <pluginRepository> 
       <id>oss.sonatype.org</id> 
       <name>OSS Sonatype Staging</name> 
       <url>https://oss.sonatype.org/content/groups/staging</url> 
      </pluginRepository> 
     </pluginRepositories>  
     . . . . . 
    </project> 
+0

dodać to do jakiego pliku? –

+1

do pom.xml gdzie masz wtyczkę odcień – hudi

+0

@hudi Jak o tym, czy używam mrówki? – Sohaib

4

Proszę odnieść to do całkowitego przykład pom.file.

Oprócz odpowiedzi udzielonej przez @ hudi, musimy dodać zależności wewnątrz wtyczki do transformacji.

<build> 
    <sourceDirectory>src/main/java</sourceDirectory> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory>    
     </resource> 
    </resources> 
    <plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>2.4.1</version> 
    <executions> 
     <execution> 
     <phase>package</phase> 
     <goals> 
      <goal>shade</goal> 
     </goals> 
     <configuration> 
      <transformers> 
      <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
       <manifestEntries> 
        <Main-Class>com.auto.facade.RunMain</Main-Class> 
        <Build-Number>123</Build-Number> 
       </manifestEntries> 
      </transformer> 
      <transformer implementation="com.github.edwgiz.mavenShadePlugin.log4j2CacheTransformer.PluginsCacheFileTransformer" />     
      </transformers> 
      <filters> 
      <filter> 
       <artifact>*:*</artifact> 
       <excludes> 
        <exclude>META-INF/*.SF</exclude> 
        <exclude>META-INF/*.DSA</exclude> 
        <exclude>META-INF/*.RSA</exclude> 
       </excludes> 
      </filter> 
     </filters> 
     </configuration> 
     </execution> 
    </executions> 
    <dependencies> 
       <dependency> 
        <groupId>com.github.edwgiz</groupId> 
        <artifactId>maven-shade-plugin.log4j2-cachefile-transformer</artifactId> 
        <version>2.6.1</version> 
       </dependency> 
      </dependencies> 
    </plugin> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <source>1.7</source> 
      <target>1.7</target> 
     </configuration> 
     </plugin> 
    </plugins> 
</build> 
0
<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>2.4.3</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>shade</goal> 
        </goals> 
        <configuration> 
         <filters> 
          <filter> 
           <artifact>*:*</artifact> 
           <excludes> 
            <exclude>META-INF/*.SF</exclude> 
            <exclude>META-INF/*.DSA</exclude> 
            <exclude>META-INF/*.RSA</exclude> 
           </excludes> 
          </filter> 
         </filters> 
         <finalName>project-name-product-1.0.0-SNAPSHOT</finalName> 
         <transformers> 
          <transformer 
            implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
           <mainClass>your.main.classname</mainClass> 
          </transformer> 
          <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
           <resource>META-INF/spring.handlers</resource> 
          </transformer> 
          <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
           <resource>META-INF/spring.schemas</resource> 
          </transformer> 
          <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
           <resource>META-INF/spring.tooling</resource> 
          </transformer> 
          <transformer 
            implementation="org.apache.maven.plugins.shade.resource.ComponentsXmlResourceTransformer"/> 
          <transformer 
            implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> 
          <transformer implementation="com.github.edwgiz.mavenShadePlugin.log4j2CacheTransformer.PluginsCacheFileTransformer" /> 

         </transformers> 
        </configuration> 
       </execution> 
      </executions> 
      <dependencies> 
       <dependency> 
        <groupId>com.github.edwgiz</groupId> 
        <artifactId>maven-shade-plugin.log4j2-cachefile-transformer</artifactId> 
        <version>2.6.1</version> 
       </dependency> 
      </dependencies> 
     </plugin> 
+3

Cześć, dzięki za odpowiedź. Choć może to być bardziej przydatne, jeśli wyjaśnisz, co robi, jak rozwiązuje problem PO. – SCB