Java Logback-动态配置

Java Logback-动态配置,java,web-services,logging,logback,large-files,Java,Web Services,Logging,Logback,Large Files,是否可以以自定义logback属性的方式配置logback: <configuration scan="true" scanPeriod="60 seconds"> <property name="logFullMessage" value="false" /> <!-- project appenders defitions --> <!-- project loggers defititions --> </config

是否可以以自定义logback属性的方式配置logback:

<configuration scan="true" scanPeriod="60 seconds">

  <property name="logFullMessage" value="false" />

  <!-- project appenders defitions -->
  <!-- project loggers defititions -->

</configuration>


将影响使用哪种模式或追加器?我们确实有web服务应用程序,它可以处理大型请求/响应,默认情况下,我们不希望记录请求/响应正文,但当出现问题时,我们希望有选项将其打开(logFullMessage=true),并将完整响应正文存储到日志文件中。

要切换使用的附件,您可以执行以下操作(仅显示相关行):


....
....

这与您已经启用的重新扫描选项相结合,使得切换附加器成为可能。

为什么不使用该记录器的日志级别来控制此操作?如果您在
trace
级别上记录完整消息,则可以通过将记录器的级别更改为
trace
来打开或关闭完整消息到任何较低的级别关闭。这就是级别的用途。您甚至可以定义一个特殊的“RequestResponse”记录器来仅控制这些消息,而不考虑包结构。您可以通过更改配置来控制级别。如果以编程方式设置loglevel并设置“scan=true”,请注意,它将在每个“扫描周期”将自身重置为配置文件中的值。将级别更改为跟踪可能会有问题,因为应用程序将开始记录几乎所有内容。是否可以通过编程方式读取logback.xml配置,例如读取属性logFullMessage的值,然后决定日志中是否包含较大的req/resp消息?
<property name="USE_APPENDER" value="FILE1" />

<appender name="FILE1" class="ch.qos.logback.core.FileAppender">
  ....
</appender>

<appender name="FILE2" class="ch.qos.logback.core.FileAppender">
  ....
</appender>

<root level="warn">
    <appender-ref ref="${USE_APPENDER}"/>
</root>