我已经使用SLF4j作为日志框架,由log4j支持。我的问题是,我正在寻找一种在运行时更改记录器日志记录级别的方法。
我知道slf4j不允许通过自己的API直接进行此操作,因此,我必须直接访问日志提供程序。就个人而言,我发现这是slf4j中的一个巨大缺陷。所以现在我的问题是,如何通过slf4j以编程方式确定我使用的是哪种提供者?使用slf4j的最大目的是让您变得与提供商无关-您可以轻松地在您喜欢的日志系统之间切换,而无需重新编码任何内容。但现在,如果我必须直接呼叫log4j,我将失去这种能力。
至少,我希望能够确定我是否使用log4j作为提供程序,如果是,那么允许用户切换日志级别。
如果我使用LoggerFactory。getLogger(Logger.ROOT\u Logger\u NAME),结果是org的一个实例。slf4j。实施。Log4jLoggerAdapter,甚至不是org。阿帕奇。log4j。记录器(正如我所希望/预期的那样)。
有什么办法能查出来吗?
谢谢Eric
SLF4J被设计为库的抽象,而不是应用程序(当然,为了一致性,您仍然可以而且应该在您自己的应用程序的日志调用中使用SLF4J)。在您自己的应用程序中,您选择底层记录器框架,因此可以在日志配置特定部分访问log4j API。
一个库决不能随意更改日志配置IMHO,所以它不适合放在SLF4J API上。
如何在运行时更改application.yaml的值?例如,我有一个服务器地址属性,希望在运行时更改
是的,我已经阅读了所有相关的问题。我正在使用log4j2(尝试了2.4版和更新到最新的2.6.2版)。 我有一个面向客户的小型实用程序。我渴望将暴露的配置保持在最低限度。但对于有问题的情况,我还想添加一个标志,以便在运行时启用调试日志。 这是我启用调试日志记录的代码 但它实际上并不适用于这些情况: 实用程序通常在30秒内完成,因此更改应该是即时的。这是log4j2。xml 使用AppenderRe
问题内容: 我有一个Android应用程序,当用户点击时,我想应用定义的样式。 我以为找到一个,但它不存在。我试过了 但它不起作用。 问题答案: 我通过创建一个新的XML文件来做到这一点,如下所示: 我的文件中也有一个条目,如下所示: 然后,在我的代码中,我创建了一个来捕获该上的tap事件: 编辑: 自API 23起,不建议使用 要改回它,你可以使用以下命令:
问题内容: 我需要以固定的间隔运行批处理作业,并且能够在运行时更改此批处理作业的时间。为此,我遇到了Spring框架下提供的@Scheduled注释。但是我不确定如何在运行时更改fixedDelay的值。我进行了一些谷歌搜索,但没有发现任何有用的信息。 问题答案: 在spring启动中,你可以直接使用应用程序属性! 例如: 请注意,如果未定义属性,你还可以具有默认值,例如,默认值为“ 60”(秒)