2016-01-22 36 views
11

Ho applicazione che quando mi allontano da Maven log4j2 si sta lavorando:configurazione Log4j2 non trovato quando si esegue un'applicazione autonoma edificata da ombra plug

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

ma quando corro vaso come applicazione stand-alone poi mostra di errore:

java -jar 

registro:

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. 

Non capisco questo errore. Essa mostra che il file di configurazione log4j2 non viene trovato, ma lamentano anche un formato che è probabilmente nel file di configurazione

La mia configurazione è:

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

e si trova nella directory principale del file jar.

UPDATE

vaso è stato creato da plugin di Maven ombra:

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

in modo che contenga tutte le librerie necessarie (circa 23 MB) e quando corro questo barattolo ho solo bisogno di specificare gli argomenti

+0

si può dato alcune informazioni su come costruire la vostra file jar - si tratta di un barattolo di grasso, o se non, come si fornisce il classpath quando lo si esegue? – sfThomas

+0

Sto affrontando lo stesso problema mentre costruisco il vaso grasso usando "maven-assembly-plugin" puoi suggerire qualcosa? –

risposta

8

ok ho trovato questo issue su questo problema.

In breve, il problema sorge quando le classi di applicazione sono impacchettate in jar uber usando il plugin maven shade. Mentre per log4j2 versione 2.8.1 la correzione è ancora in corso, la soluzione suggerita è quella di aggiornare Maven pom.xml con impostazioni di configurazione aggiuntivi per plug-ombra come segue:

<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

aggiungere questo a quale file? –

+1

a pom.xml dove hai il plugin per l'ombra – hudi

+0

@hudi Che ne dici se uso la formica? – Sohaib

4

prega di fare riferimento questo per l'esempio completo di pom.file.

Oltre alla risposta fornita da @hudi, , è necessario aggiungere dipendenze all'interno del plug-in per la trasformazione.

<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

Ciao, grazie per la risposta. Anche se potrebbe essere più utile se spieghi che cosa fa in che modo risolve il problema dell'OP. – SCB