2017-06-05 103 views
3

我正在開發一個應用程序,使用我的另一個項目作爲maven依賴項。Logback覆蓋依賴關係logback.xml

期望

我想用自己的logback.xml登錄自己的文件我的依賴。 我希望應用程序使用它自己的logback.xml文件來登錄控制檯和一個單獨的文件,而不是依賴項。我希望這兩個文件都位於應用程序jar附近的日誌文件夾中。

現在做什麼

但同時爲應用程序和依賴使用應用程序的logback.xml,一切都在控制檯,並在同一個文件中記錄的時刻。

我該如何解決這個問題?

詳細瞭解項目

都使用的logback作爲一個記錄器。依賴關係是一種協議實現,它將通信信息記錄在文件中,該文件必須位於與應用程序日誌不同的文件中。 應用程序和依賴項都具有經典的maven結構,其中包含資源文件夾中的logback.xml文件。

依賴性logback.xml

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
     <Pattern> 
      %d{HH:mm:ss}|%msg%n 
     </Pattern> 
    </encoder> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <!-- rollover daily --> 
     <fileNamePattern>./log/communications.%d{yyyy-MM-dd}.%i.log 
     </fileNamePattern> 
     <timeBasedFileNamingAndTriggeringPolicy 
       class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
      <maxFileSize>10MB</maxFileSize> 
     </timeBasedFileNamingAndTriggeringPolicy> 
    </rollingPolicy> 
</appender> 

<root level="DEBUG"> 
    <appender-ref ref="FILE"/> 
</root> 

</configuration> 

應用logback.xml

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <layout class="ch.qos.logback.classic.PatternLayout"> 
     <Pattern> 
      %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n 
     </Pattern> 
    </layout> 
</appender> 
<appender name="FILEAPPLI" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
     <Pattern> 
      %d{HH:mm:ss}|%msg%n 
     </Pattern> 
    </encoder> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <!-- rollover daily --> 
     <fileNamePattern>./log/debugfileappli.%d{yyyy-MM-dd}.%i.log 
     </fileNamePattern> 
     <timeBasedFileNamingAndTriggeringPolicy 
       class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
      <maxFileSize>10MB</maxFileSize> 
     </timeBasedFileNamingAndTriggeringPolicy> 
    </rollingPolicy> 
</appender> 

<root level="DEBUG"> 
    <appender-ref ref="STDOUT"/> 
    <appender-ref ref="FILEAPPLI"/> 
</root> 

</configuration> 

回答

0

我發現了一個解決方案。在我的依賴代碼中,我調用一個特定的記錄器名稱。

private static final Logger logger = LoggerFactory.getLogger("dependencyLogger"); 

而且我在我的應用程序logback.xml

<logger name="dependencyLogger" level="debug"> 
    <additivity="false"> 
    <appender-ref ref="FILE-AUDIT" /> 
    <appender-ref ref="STDOUT" /> 
</logger> 

這樣我可以處理這個聲明作爲記錄我希望所有從依賴單一logback.xml日誌