Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Log4j2文件包含:<;包括>;及<;包括>;类似于Logback_Java_Logging_Configuration_Log4j_Log4j2 - Fatal编程技术网

Java Log4j2文件包含:<;包括>;及<;包括>;类似于Logback

Java Log4j2文件包含:<;包括>;及<;包括>;类似于Logback,java,logging,configuration,log4j,log4j2,Java,Logging,Configuration,Log4j,Log4j2,Log4j2是否像Logback一样支持文件包含机制?这用于包含来自另一个文件(包含附加器、记录器等)的部分配置文件 仅供参考-以下是它在Logback中的工作原理: Joran支持包含来自另一个文件的部分配置文件。这是通过声明一个元素来完成的,如下所示: 示例:文件include(logbackexamples/src/main/java/chapters/configuration/containingConfig.xml) 目标文件的元素必须嵌套在元素中。例如,ConsolePend

Log4j2是否像Logback一样支持文件包含机制?这用于包含来自另一个文件(包含附加器、记录器等)的部分配置文件

仅供参考-以下是它在Logback中的工作原理:

Joran支持包含来自另一个文件的部分配置文件。这是通过声明一个元素来完成的,如下所示:

示例:文件include(logbackexamples/src/main/java/chapters/configuration/containingConfig.xml)


目标文件的元素必须嵌套在元素中。例如,ConsolePender可以声明为:

示例:文件include(logbackexamples/src/main/java/chapters/configuration/includedConfig.xml)


%d-%m%n

Log4j2中存在一种稍有不同但类似的机制,它支持XInclude。
有关详细信息,请参阅。(这需要更好地记录…)

可以使用XInclude,但它不是理想的解决方案。使用XInclude时,include文件本身必须定义一个顶级元素,如appender/logger/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>

准时制%d%-5p[%t]%C{1.}-%m%n
例如,包含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>

%d%-5p[%t]%C{1.}-%m%n
通过使用空的“回退”块,可以使XIncludes成为可选的。但是,在最新版本的log4j2中,这会导致Xerces发出警告消息(因为log4j2正在使用DefaultErrorHandler)



我尝试了这种方法-。但是,XInclude的问题是引用的文件始终是必需的。在围绕日志记录开发框架组件时,也会出现不需要包含单独日志配置的情况。logback的方法具有可选属性,如果文件不存在,该属性将忽略该属性。例如,您可能希望在Log4j2 Jira问题跟踪器上提出此功能请求。或者这是您正在寻找的吗?谢谢你的指点。是的,有点,但更重要的是,附加配置被视为可选配置。即,如果没有其他配置,则允许log4j2继续使用默认配置。此功能对我们非常重要,可能会阻止我们从logback移动到log4j2,直到它可用为止。在下一个即将发布的版本中包含此功能的可能性有多大?如果愿意的话,我可以打开一个功能请求或更新任何现有的票证。
<?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>
<?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>
<xi:include href="log4j2-optional.xml">
    <xi:fallback />
</xi:include>