2016-01-22 7 views
11

builded Standalone-Anwendung läuft Ich habe Anwendung, die, wenn ich von Maven laufen log4j2 es funktioniert:Log4j2 Konfiguration nicht gefunden, wenn sie durch Schatten Plugin

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

aber wenn ich jar als eigenständige Anwendung laufen dann zeigt es Fehler:

java -jar 

log:

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. 

ich nicht diesen Fehler verstehen. Es zeigt, dass log4j2 Konfigurationsdatei nicht gefunden wird, sondern auch über einige Formate beschweren, die wahrscheinlich in der Konfigurationsdatei ist

Meine Konfiguration ist:

<?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> 

und es wird in Stammverzeichnis der JAR-Datei befindet.

UPDATE

Glas wird von Maven Schatten Plugin erstellt:

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

so enthält es alle notwendigen Bibliotheken (ca. 23 MB) und als ich dieses Glas laufen, ich muss nur Argumente angeben

+0

Können Sie einige Informationen darüber, wie Sie Ihre JAR-Datei bauen gegeben - ist es ein fettes Glas, oder wenn nicht, wie Sie den Classpath angeben, wenn Sie es ausführen? – sfThomas

+0

Ich bin vor dem gleichen Problem, während das Glas Fett Gebäude „Maven-Montage-Plugin“ verwenden, können Sie etwas vorschlagen? –

Antwort

8

ok fand ich diese issue über dieses Problem.

Kurz gesagt, tritt das Problem auf, wenn Anwendungsklassen verpackt in uber jar Maven Schatten Plugin. Während für log4j2 Version 2.8.1 das Update noch aussteht, ist die vorgeschlagene Abhilfe Maven pom.xml mit zusätzlichen Konfigurationseinstellungen für Schatten-Plugin wie folgt zu aktualisieren:

<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

fügen Sie das zu welcher Datei hinzu? –

+1

pom.xml wo u Schatten Plugin – hudi

+0

@hudi Wie wäre es, wenn ich Ameise verwenden? – Sohaib

4

Bitte diese von pom.file für das gesamte Beispiel beziehen.

Zusätzlich zu der Antwort von @hudi, , müssen wir Abhängigkeiten innerhalb des Plugins für die Umwandlung hinzufügen.

<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

Hallo, Danke für die Antwort. Obwohl es nützlich sein könnte, wenn Sie erklären, was es Hand tut, wie es das Problem des OP löst. – SCB

Verwandte Themen