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

如何在运行时更改slf4j级别?

曾飞沉
2023-03-14

我已经使用SLF4j作为日志框架,由log4j支持。我的问题是,我正在寻找一种在运行时更改记录器日志记录级别的方法。

我知道slf4j不允许通过自己的API直接进行此操作,因此,我必须直接访问日志提供程序。就个人而言,我发现这是slf4j中的一个巨大缺陷。所以现在我的问题是,如何通过slf4j以编程方式确定我使用的是哪种提供者?使用slf4j的最大目的是让您变得与提供商无关-您可以轻松地在您喜欢的日志系统之间切换,而无需重新编码任何内容。但现在,如果我必须直接呼叫log4j,我将失去这种能力。

至少,我希望能够确定我是否使用log4j作为提供程序,如果是,那么允许用户切换日志级别。

如果我使用LoggerFactory。getLogger(Logger.ROOT\u Logger\u NAME),结果是org的一个实例。slf4j。实施。Log4jLoggerAdapter,甚至不是org。阿帕奇。log4j。记录器(正如我所希望/预期的那样)。

有什么办法能查出来吗?

谢谢Eric

共有1个答案

姚航
2023-03-14

SLF4J被设计为库的抽象,而不是应用程序(当然,为了一致性,您仍然可以而且应该在您自己的应用程序的日志调用中使用SLF4J)。在您自己的应用程序中,您选择底层记录器框架,因此可以在日志配置特定部分访问log4j API。

一个库决不能随意更改日志配置IMHO,所以它不适合放在SLF4J API上。

 类似资料:
  • 如何在运行时更改application.yaml的值?例如,我有一个服务器地址属性,希望在运行时更改

  • 问题内容: 我有一个Android应用程序,当用户点击时,我想应用定义的样式。 我以为找到一个,但它不存在。我试过了 但它不起作用。 问题答案: 我通过创建一个新的XML文件来做到这一点,如下所示: 我的文件中也有一个条目,如下所示: 然后,在我的代码中,我创建了一个来捕获该上的tap事件: 编辑: 自API 23起,不建议使用 要改回它,你可以使用以下命令:

  • 问题内容: 我需要以固定的间隔运行批处理作业,并且能够在运行时更改此批处理作业的时间。为此,我遇到了Spring框架下提供的@Scheduled注释。但是我不确定如何在运行时更改fixedDelay的值。我进行了一些谷歌搜索,但没有发现任何有用的信息。 问题答案: 在spring启动中,你可以直接使用应用程序属性! 例如: 请注意,如果未定义属性,你还可以具有默认值,例如,默认值为“ 60”(秒)

  • 我有一个表格视图,里面有一个单元格。单元格包含三个标签:标题标签和下面两个相互对应的标签。有时,如果这两个标签不包含数据,我需要隐藏下面这两个标签,并将“标题标签”的“顶部空间到容器”更改为“中心Y到容器”。当然,当两个标签包含数据时,还会恢复约束。这是一个简单演示项目的截图,只是为了展示这个想法: 更新马克斯·麦克劳德的回答指向了正确的方向。技巧是在第一个和第二个标签隐藏时向下推标题标签。所以,