从配置中删除记录器

时间:2017-04-06 18:53:23

标签: logback

当我使用logback作为日志框架时,我在运行时添加了logger配置以进行调试。例如,将“org.springframework”设置为调试级别。

找到我需要的数据后,我想在不重新启动应用程序的情况下删除此配置。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

根据您希望如何修改日志级别,您有两个选项。

第一个选项 - 使用logback.xml

Logback xml提供了定期扫描配置的选项。通过设置,您可以要求记录器框架定期更新其内存中设置以与XML配置同步。如果要启用调试模式,XML配置将如下所示:

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

<!-- Appender configurations here -->

<logger name="org.springframework" level="debug" additivity="false">
   <appender-ref ref="YOUR_APPENDER_NAME"/>
</logger>

<!-- Other logger configurations (including root) go here -->
</configuration>

完成任务后,您可以删除该记录器条目或将级别设置为ERROR以停止记录该程序包。

第二个选项 - 内存中

如果您不想触摸您的logback.xml,但以某种方式在运行时处理它(比如使用您应用程序的某些REST API),您可能会获得特定的记录器实例并将级别设置为DEBUG。完成活动后,您可以将级别设置为“无效”。以便从父级继承级别。示例代码如下:

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import org.slf4j.LoggerFactory;

.....

LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
Logger logger = context.getLogger("org.springframework");
logger.setLevel((Level.toLevel("DEBUG"));

// Do your task

logger.setLevel(null); // When we do this, level will be inherited from parent.

答案 1 :(得分:0)

logback有一个选项,允许定期重新扫描配置文件以查找更改。

<configuration scan="true"> 
  ... 
</configuration>