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

重写日志返回配置

胡国兴
2023-03-14

有没有办法覆盖日志回溯配置?我知道我们在名为 logback 的文件中定义了日志回退配置.xml(通常存储在路径 src/main/resources 中),并且我知道通过使用

<configuration>

<!--<include url="file:///d:/ServerConfig.xml"/>-->
<include file="${outPut}/ServerConfig.xml"/>


<logger name="Server" LEVEL="DEBUG">
    <appender-ref ref="FILEOUT" />
</logger>

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

</configuration>

但是,如果我想覆盖此默认配置,该怎么办?例如,将根记录器级别设置为 INFO。

以下是包含的文件:

<included>

<!-- <property file="d:/ServerSysVar.properties"/>-->
<property file="${outPut}/ServerSysVar.properties"/>


<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>



<appender name="FILEOUT" class="ch.qos.logback.core.FileAppender">
    <file>${Sys_Location}/Serverfile4.log</file>
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} %class{36}.%M %L CLIENT_PORT:%X{ClientPort}- %msg%n</pattern>
    </encoder>
</appender>


<logger name="Service" LEVEL="DEBUG">
    <appender-ref ref="FILEOUT" />
</logger>

 <root>
    <appender-ref ref="STDOUT" />
   <!-- <appender-ref ref="FILEOUT" />-->
</root>

</included>

共有2个答案

祁远
2023-03-14

我有一个类似的问题,这个答案似乎是最好的方法。

就我而言,我需要覆盖包含的文件以完全关闭其中一个附加程序。

使用a变量作为日志级别值,可以将其更改为OFF。

<included>
  (...)
  <root level="${root.level.console:-DEBUG}">
    <appender-ref ref="CONSOLE" />
  </root>
  <root level="${root.level.file:-DEBUG}">
    <appender-ref ref="FILE" />
  </root>
</included>

如http://logback.qos.ch/manual/configuration.html#rootElement所述

<configuration>
  <include resource="base.xml" />
  (...)
  <property name="root.level.console" value="OFF" />
</configuration>
司英飙
2023-03-14

我不认为您可以从包含的文件中覆盖logback.xml-定义。

但是我有一种方法可以解决您关于覆盖根记录器级别,使用默认值的变量替换的问题:

logback.xml

<configuration>
  <include file="includedFile.xml" />

  <!-- STDOUT appender stuff -->

  <root level="${root.level:-DEBUG}">
    <appender-ref ref="STDOUT" />
  </root>
<configuration>

includedFile.xml

<included>

  <!-- override the default value; or comment out to leave it at default -->
  <property name="root.level" value="INFO" />

</included>

有了这个概念,我甚至能够控制从包含的文件到多个追加器的输出:

logback.xml

<configuration>
  <include file="includedFile.xml" />

  <!-- STDOUT appender stuff -->

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>${file.level:-ALL}</level>
    </filter>
    <file>/path/to/logfeil.log</file>
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>${syslog.level:-OFF}</level>
    </filter>
    <syslogHost>localhost</syslogHost>
    <facility>${syslog.facility:-LOCAL1}</facility>
    <suffixPattern>${syslog.pattern:-[%thread] %logger{36} - %msg}</suffixPattern>
   </appender>

  <logger name="my.package" level="${logging.level:-INFO}" additivity="false">
    <appender-ref ref="FILE" />
    <appender-ref ref="SYSLOG" />
  </logger>

  <root level="${root.level:-DEBUG}">
    <appender-ref ref="STDOUT" />
  </root>
<configuration>

includedFile.xml中,我可以控制消息是否以及在什么级别通过附加程序FILESYSLOG,设置属性file.levelsyslog.level,当然还有logging.level

 类似资料:
  • 在我的应用程序的logback.xml中,我有一个AsyncAppender定义如下。 当我在Windows10上部署Tomcat中的war时。 null 请各位专家告诉我,我在这里做错了什么?AsyncAppender是否有其他属性可以帮助修复此行为?

  • 我在SpringBoot中使用logback,但无法删除旧的日志文件。 我在logback-spring.xml文件中定义了以下appender: 即使我设置了“MaxHistory”和“CleanHistoryonStart”,超过10天的日志文件也不会被删除。既不是翻转也不是启动。

  • 有人知道如何在Dropwizard框架中启用debug以进行登录吗?以下是版本信息: DropWizard:3.1.2登录:1.1.7

  • web3.eth.getPastLogs()方法根据指定的选项返回历史日志。 调用: web3.eth.getPastLogs(options [, callback]) 参数: options:Object - 过滤器对象,包含如下字段: fromBlock - Number|String: The number of the earliest block ("latest" may be g

  • 我支持使用logback生成日志文件的解决方案。问题是生成的日志文件创建得太快,以至于它们填满了硬盘驱动器,导致系统崩溃。 当分析创建的日志文件时,我们可以看到它们的大小为5MB,当它们翻转到下一个日志文件时,下一个日志文件是与上一个日志文件相同的数据,只添加了15-20条跟踪线,然后它将以相同的格式创建下一个日志文件,并以快速的速度继续。有人见过使用logback的这种行为吗?问题在于Esuit

  • 我知道通过配置服务器和刷新endpoint,可以在Spring启动应用程序中动态更改日志记录级别。为了控制日志轮换策略和文件的json编码,我决定使用logback。但是这会阻止我动态更改日志记录级别。 这意味着只有信息会被写入控制台/文件。但是如果我想在运行时将其更改为调试/跟踪怎么办? 编辑我仍然不理解根级别标记。但是,logback似乎从应用程序获取了日志级别。属性,这基本上回答了我的问题。