当前位置: 首页 > 知识库问答 >
问题:

如何在log-back.xml中包含xml

公羊雅达
2023-03-14

我正在编写一个用于日志记录的自定义spring boot starter项目。我的logback-spring.xml变得很大,希望将附加符放入单独的文件(console-appender.xml和file-appender.xml)中,并希望包含在logback-spring.xml文件中,如下所示。我将所有三个XML放在自定义starter项目的src/main/resources文件夹中。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <springProperty scope="context" name="JSONLOGSENABLED" source="spring.logs.json.enabled" defaultValue="true" />
    <springProperty scope="context" name="JSONLOGSAPPENDER" source="spring.logs.json.appender" defaultValue="console" />

    <if condition='property("JSONLOGSENABLED").equalsIgnoreCase("true")'>
        <then>

        <include file="{path to file}/console-appender.xml"/>
        <include file="{path to file}/file-appender.xml"/>
        <root level="INFO">
            <if condition='property("JSONLOGSAPPENDER").equalsIgnoreCase("file")'>
                <then>
                    <appender-ref ref="FILEJSON" />
                </then> 
            <else>
                <appender-ref ref="CONSOLEJSON" />
           </else>
           </if>
        </root>
    </then>
    </if>

    <logger
        name="org.springframework.web.filter.CommonsRequestLoggingFilter">
        <level value="DEBUG" />
    </logger>

</configuration>

文件-appender.xml

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>testFile.log</file>
    <append>true</append>
    <!-- set immediateFlush to false for much higher logging throughput -->
    <immediateFlush>true</immediateFlush>
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender>

但是当在我的Spring Boot应用程序中使用这个启动程序时,它无法解析控制台和文件附加文件。

我尝试过以下路径:

 <include file="/src/main/resources/console-appender.xml"/>
 <include file="./console-appender.xml"/>
 <include resource="console-appender.xml"/>

在这种情况下如何正确包含文件?

共有1个答案

段干靖
2023-03-14

是的。有可能。Logback使用Joran,因此您必须遵循Joran规则。
有关更多信息,请参阅文档。

无论如何,这是执行您所要执行的任务的首选方法
例如,我定义了两个文件,然后您可以根据自己的喜好对其进行修改。

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
    <include resource="console-appender.xml"/>

    <root level="debug">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>   
<included>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date{"yyyy-MM-dd HH:mm:ss.SSS", Europe/Rome} [%mdc{id}] [%-11thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
</included>

请注意, 标记是必需的

 类似资料:
  • 尝试转换多个时。使用py2exe将文件复制到exe文件中我得到错误:回溯(最近一次调用上次):文件“ParentWindow.py”,第7行,in 提到的“FileAnalysers1”是包含. py脚本的python包。如何在exe中包含整个包?

  • 问题内容: 我正在编写一个网络自动化程序,到目前为止,使用Selenium的FirefoxDriver可以正常工作。但是,如果未安装Firefox,我想使其使用Chrome。我下载了ChromeDriver,将其放在Eclipse项目的文件夹中,然后运行它。在我添加之后,它运行良好。但是,当我尝试导出它时(使用Eclipse的标准Export)。我相信它会崩溃,因为它找不到ChromeDriver

  • 问题内容: 我正在使用pyinstaller创建我的python脚本的可执行文件。 在脚本中,我使用了以下导入: 问题是,运行时,它将导致包括Firefox而不是Chrome。在结果文件夹c:… \ dist \ myscript \ selenium \ webdriver中,有一个firefox文件夹,因此它只是跳过了chromedriver,这对我来说是个严重的问题,因为脚本需要与Chrom

  • 如果任何人有一个解决办法,或者可以指出我应该读什么的方向,以进一步理解这一点,这将是非常感谢的。 参见下面的cmakelists.txt

  • 我还使用tkinter用Python3.7编写了一个程序。因为我使用的是外部图片,所以当我将所有内容编译成一个exe时,我需要包含它们。我尝试过执行,但仍然出现以下错误: _特金特。Tcl错误:无法打开“files/bg.png”:没有这样的文件或目录 代码如下: 我做错了什么?我也尝试过添加二进制文件,将该文件添加到我的spec文件中。我真的搞不懂!

  • 问题内容: 我想创建一个XML文件,该文件将用于存储Java程序的结构。我能够成功解析Java程序并根据需要创建标签。当我尝试,包括我的标签中的源代码,就会出现问题,因为Java源代码可以使用的实体引用广大和保留的字符,如,,,。我无法创建有效的XML。 我的XML应该像这样: 这样,但是问题是条件表达式或其他语句中有很多或其他保留的符号,这妨碍了XML的验证。由于所有这些数据(源代码)都是由用户