你說:
我有一個問題,當一個新的模塊使用的logback經典depdency的記錄不能從pom.xml文件,因爲它打破它被排除在外。
這是假設還是您嘗試過?另外,如果您確實嘗試過,那麼您是否也刪除了logback-core依賴項?刪除這些依賴關係的唯一方法是會破壞模塊,因爲logback本身實現了slf4j API,所以模塊依賴於日誌實現。如果模塊確實依賴於實現而不是API /接口,我不認爲如果不移除這些依賴關係(更改模塊源代碼)或編寫模塊依賴的某些實現類的stubbed版本。
當我編寫遵循logback manual中的模式的代碼時,只要我沒有在logback實現類中引入依賴關係,就可以將實現從logback切換到log4j2,而不會有任何問題。
這裏是我寫的例子:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
Main main = new Main();
main.main();
}
public void main(){
log.trace("trace msg");
log.debug("debug msg");
log.info("info msg");
log.warn("warn msg");
log.error("Error msg");
log.info(log.getClass().getName());
}
}
這裏是在POM的依賴關係:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.22</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
這裏是輸出:
00:48:26.378 [main] DEBUG blah.Main - debug msg
00:48:26.380 [main] INFO blah.Main - info msg
00:48:26.380 [main] WARN blah.Main - warn msg
00:48:26.380 [main] ERROR blah.Main - Error msg
00:48:26.380 [main] INFO blah.Main - ch.qos.logback.classic.Logger
現在我改變了POM用log4j2替換logback jar:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.22</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
這裏的輸出進行此更改後:
2017-09-03 00:52:21,630 INFO b.Main [main] info msg
2017-09-03 00:52:21,631 WARN b.Main [main] warn msg
2017-09-03 00:52:21,631 ERROR b.Main [main] Error msg
2017-09-03 00:52:21,632 INFO b.Main [main] org.apache.logging.slf4j.Log4jLogger
因此,基於這一點,我想你應該,如果事情被實施了「正道」,能夠與log4j2和它交換的logback罐子應該「只是工作」。
您也說:
我主要找的是我的依賴關係的deafult控制檯記錄日誌之間的分裂,以我自己的log4j。XML記錄器和追加程序,所以我可以用separetly ..
現在是完全清楚我你問什麼,但我認爲你想有從模塊的日誌消息去安慰和你任何日誌與你的log4j2配置一起使用。如果這種情況與修改log4j2配置一樣簡單 - 請添加具有適當名稱的記錄器並分配相應的appender。例如,如果你的模塊的類是com.my.package.Class1,com.my.package.Class2,com.my.package.Class3等,那麼你可以創建一個com.my.package的記錄器並給它一個控制檯appender以及相應的文件appender。
希望這會有所幫助!