2014-09-05 60 views
2

Log4j2支持像Logback這樣的文件包含機制嗎?這是對於包括一個配置文件的一部分從另一個文件(包含追加程序,記錄器等)Log4j2文件包含:<include>和<included>類似於Logback

作爲一個供參考 - 在這裏是如何工作的logback中:

Joran支持包括從另一個配置文件的部分文件。這是通過聲明一個元素來完成,如下所示:

例如:文件包括(的logback-實例/ SRC /主/爪哇/章節/配置/ containingConfig.xml)

<configuration> 
<include file="src/main/java/chapters/configuration/includedConfig.xml"/> 

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

目標文件必須將其元素嵌套在元素中。例如,一個是ConsoleAppender可被聲明爲:

例如:文件包括(的logback-實例/ SRC /主/爪哇/章節/配置/ includedConfig.xml)

<included> 
<appender name="includedConsole" class="ch.qos.logback.core.ConsoleAppender"> 
<encoder> 
    <pattern>"%d - %m%n"</pattern> 
</encoder> 
</appender> 
</included> 

回答

2

甲略有不同,但類似的機制存在於Log4j2中,它支持XInclude。 詳情請參閱https://issues.apache.org/jira/browse/LOG4J2-341。 (這需要更好記錄......)

+0

我試過這種方法 - 。但是,XInclude的問題是引用的文件始終是強制性的。當圍繞日誌記錄開發框架組件時,也會出現不需要包含單獨日誌配置的情況。 logback的方法具有可選屬性,該屬性忽略文件不存在。例如, codehammer 2014-09-08 06:12:40

+0

您可能想要將此作爲Log4j2 Jira問題跟蹤器上的功能請求提出。 – 2014-09-08 11:27:53

+1

或者這是你在找什麼? https://issues.apache.org/jira/browse/LOG4J2-494 – 2014-09-08 12:24:01

1

XInclude可以使用,但不是理想的解決方案。使用XInclude時,包含文件本身必須定義一個頂級元素,例如Appenders/Loggers/Properties。

這裏是你如何使用它的一個例子:

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="error" xmlns:xi="http://www.w3.org/2001/XInclude"> 
    <!-- this will override the log pattern defined in the included log4j-properties.xml --> 
    <Properties> 
     <Property name="log-pattern">jit %d %-5p [%t] %C{1.} - %m%n</Property> 
    </Properties> 

    <xi:include href="log4j2-properties.xml" /> 
    <xi:include href="log4j2-appenders.xml" /> 
    <xi:include href="log4j2-loggers.xml" /> 
</Configuration> 

舉個例子包括log4j2-properties.xml中可能看起來像:

<?xml version="1.0" encoding="UTF-8"?> 
<Properties> 
    <!-- define the log pattern as a property so that it can be overridden --> 
    <Property name="log-pattern">%d %-5p [%t] %C{1.} - %m%n</Property> 
</Properties> 

您可以XIncludes可選擇通過使用空的「後備」塊。但是,在可用的最新版本的log4j2中,這會導致出現Xerces的警告消息(因爲log4j2正在使用DefaultErrorHandler)。

<xi:include href="log4j2-optional.xml"> 
    <xi:fallback /> 
</xi:include> 
相關問題