我可以在 xml 配置的 logback 中禁用附加程序吗?我有我的配置,我想放置两个附加程序,一个用于数据库,另一个用于文本日志,但只有一个必须激活。谢谢!
问问题
26759 次
2 回答
14
不知道为什么要停用附加程序,您要通过禁用来实现什么。
有一些方法可以实现它
- 在 logback.xml 中添加 appender 并保持注释。当您想启用它时,请取消注释附加程序并重新加载 logback 配置(http://logback.qos.ch/manual/configuration.html#autoScan)
- 添加如下所示的记录器并使用适当的记录器进行记录
<configuration>
<appender name="stdoutappender" />
<appender name="dbappender" />
<logger name="stdoutlogger" level="DEBUG">
<appender-ref ref="stdoutappender" />
</logger>
<logger name="dblogger" level="OFF">
<appender-ref ref="dbappender" />
</logger>
</configuration>
在这种情况下,您还必须在修改 logback 配置 (logback.xml) 时重新加载配置
- 如果您事先知道条件(激活/停用),则使用 if else block 启用/禁用
在上述 3 个选项之上,您可以以编程方式创建 logback 配置
于 2013-11-26T05:45:06.530 回答
8
为 appender 选择日志级别的简单方法是使用 a ThresholdFilter
,例如:
<appender name="ap.Console" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>${logging.appender.console.level:-OFF}</level>
</filter>
<encoder>
<pattern>${pattern}</pattern>
</encoder>
</appender>
当您想激活特定的附加程序时,您应该使用适当的-D
选项运行您的 jvm。对于上面定义的 appender,它将是:
java -Dlogging.appender.console.level=DEBUG
当然,如果您激活自动配置重新加载 ( http://logback.qos.ch/manual/configuration.html#autoScan ),您可以在应用程序运行时更改过滤器级别。
当您不想在每次启动应用程序(具有不同的日志记录级别)时更改您的 logback 配置文件时,我提出的方法很方便。您只需通过运行带有相应-D
选项的 jvm 来设置 logback 配置中使用的属性。
于 2019-02-25T10:46:14.003 回答