我通常使用Logback.xml和application.properties的如下因素包獲得所有我需要的。 Logback.xml:什麼是我的外部庫JAR使用Logback.xml正確的方式
<configuration>
<!-- External properties -->
<property file="./application.properties" /> <!-- for build -->
<timestamp key="byDate" datePattern="yyyyMMdd"/>
<!-- Send messages to System.out - CONSOLE -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
</encoder>
<withJansi>true</withJansi>
</appender>
<!-- Send messages to a rolling file -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logging.path}/${spring.application.name}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover. Make sure the path matches the one in the file element or else the rollover logs are placed in the working directory. -->
<fileNamePattern>${logging.path}/${spring.application.name}_%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>5MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
</encoder>
</appender>
<root level="${logging.level}">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
application.properties:
spring.application.name=MyApp
#Logging Settings
logging.level=INFO
logging.path=/data/MyApp/logs/
logging.config=/data/MyApp/Logback.xml
但現在我想寫一個外部JAR,我將包括我的 「其他項目」。但我的「其他項目」已經有Logback.xml和application.properties,我希望外部的Jar也會使用它。我會盡量不在Logback.xml和application.properties的外部Jar項目中,我一直在想它會找到Logback.xml。但它不起作用。當我從外部Jar調用某些東西時,我沒有看到任何日誌消息。你能幫我解答一下,在這種情況下我應該怎麼做?順便說一句,如果它是importanl我使用Maven的建設和依賴。所以我建立了外部罐子,並將其包含在我的項目中:
<dependency>
<groupId>com.myapp.someprovider</groupId>
<artifactId>SomeAppProvider</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>/Users/me/Projects/Java/Server/SomeAppProvider/target/SomeAppProvider-1.0.0.jar</systemPath>
</dependency>
在此先感謝!
感謝您的幫助!但我仍然不明白。假設我的ext jar項目 - 項目A和我的大項目 - 項目B。當然,我在「Project B/src/main/resources /」中有我的Logback.xml和application.properties,而我在「項目A/src/main/resources /「。對?在這種情況下,我看到項目B的登錄messedges只(((我建設項目A的最終二進制的罐子。 – user3742622
在你的榜樣,記錄了外部JAR(項目A)將在項目B中的日誌配置中定義從整個應用程序登錄一切都應該在同一個日誌文件最終不管代碼來自哪個罐子,因爲你在兩個模塊使用相同的日誌API的。 – marthursson
是的,我是用兩個模塊相同的日誌記錄API。 ..但它不像你說的那樣工作... – user3742622