簡體   English   中英

Runnable Jar(JavaFx)使用spring boot maven插件作為構建器找不到log4j2.xml

[英]Runnable Jar (JavaFx) cannot find log4j2.xml using spring boot maven plugin as builder

我有點腌漬。

我在git中有一個主分支(Cant分享對不起),當使用spring boot maven插件構建時,它完美運行並且沒有任何問題。 現在我做了一些工作到分支並添加東西(只添加了2個依賴項),一切正常但日志記錄。 它找不到我的log4j2.xml配置文件,無法生成日志文件。

據我所知(如果我錯了,請糾正我。我還在努力學習如何正確構建可運行的jar),當你通過maven spring插件構建時,它只會放置所有必需的依賴項和類(資源除外) )在可執行jar文件中。 然后,您必須將必要的資源放在已編程的位置上。

我不知道我錯過了什么。 它正確地將我的spring bean配置加載到jar文件之外(它在啟動時不會崩潰)。 當我通過終端(java -jar App.jar)運行可執行文件時,它不包含任何與log4j2相關的錯誤。

當我分支時,我只添加了2個依賴項/庫(下面)。 我當前設置了我的記錄器,它應該記錄與運行可執行文件的文件夾相同的文件夾。

自分支以來添加的依賴項。

<dependency>
   <groupId>org.apache.sshd</groupId>
   <artifactId>sshd-core</artifactId>
   <version>1.4.0</version>
</dependency>

<dependency>
   <groupId>com.jcraft</groupId>
   <artifactId>jsch</artifactId>
   <version>0.1.54</version>
</dependency>

我正在使用版本2.8.2 for log4j2 api和core。

這是我的pom.xml文件中的spring boot插件腳本。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
            <configuration>
                <classifier>spring-boot</classifier>
                <mainClass>
                        My Main Class here
                </mainClass>
                <layout>
                    JAR
                </layout>
            </configuration>
        </execution>
    </executions>
</plugin>

我沒有在代碼中設置log4j2.xml。 我只是向眾神祈禱,在我參考它時,它會在運行時正確設置。

private static Logger log = LogManager.getLogger(CafQrCodeScannerMain.class);

最后這是我的log4j2.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
            <File name="myFile" filename="${bundle:SomeFile:SomeFile.scanner.configuration.log.logFile}" immediateFlush="true" append="true">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>
    <Loggers>
        <Root level="all">
            <AppenderRef ref="Console" />
            <AppenderRef ref="myFile"/>
        </Root>
    </Loggers>
</Configuration>

它引用具有內容someFile.scanner.configuration.log.logFile = AppName.log的屬性文件

任何幫助,將不勝感激。

你需要一個名為log4j2.xml的配置把它放在src / main / resources下。 並檢查您的pom.xml以獲取log4j依賴項

<dependencies>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.8.2</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.8.2</version>
  </dependency>
</dependencies>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM