logback - 重新映射特定记录器的日志级别

2023-11-27

我有一个 logback 配置,其中有一个带有阈值过滤器的附加程序:

<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
  <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    <level>INFO</level>
  </filter>
  ...
</appender>

这确保只有信息和更高级别(警告、错误)才会记录到系统日志中。但是,我们使用的第 3 方库之一正在调试时记录特定事件,我想将此事件记录到系统日志中。我想到的第一个方法是尝试重新映射记录器中的日志级别,但不确定这是否可能?就像是:

<logger name="akka.some.Thing" level="DEBUG" logAs="INFO">
  <appender-ref ref="SYSLOG" />
</logger>

显然,“logAs”参数不存在,所以我不能这样做。将 akka.some.Thing 记录到 SYSLOG 附加程序,同时为其他记录器保留过滤器的最佳方法是什么?

另一种方法是创建一个名为 SYSLOG2 的第二个附加程序,它没有适当的过滤器,并设置特定的记录器来使用它,但想知道是否有一种方法可以仅使用 1 个 SYSLOG 附加程序来配置 logback...

Thanks,


看看org.springframework.boot.logging.logback.LevelRemappingAppender班级。 (请注意,它已从 Sprint Boot 中删除,但您仍然可以获取并使用其源代码。) 使用此附加程序,可以重新映射最终用于日志事件的附加程序,也可以重新映射用于最终日志事件的级别 - 例如通过将 DEBUG 级别更改为 INFO 级别。

示例 logback.xml:

<appender name="DEBUG_LEVEL_REMAPPER" class="org.springframework.boot.logging.logback.LevelRemappingAppender">
    <!-- Optional: specify the destination logger the event ends up in -->
    <destinationLogger>org.springframework.boot</destinationLogger>
    <!-- Optional: specify log level remapping  -->
    <remapLevels>INFO->DEBUG,ERROR->WARN</remapLevels>
</appender>

<logger name="org.thymeleaf" additivity="false">
    <appender-ref ref="DEBUG_LEVEL_REMAPPER"/>
</logger>

请注意,重新映射到特定目标记录器可能会使查找原始日志事件的源代码变得更加困难 - 因此请小心使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

logback - 重新映射特定记录器的日志级别 的相关文章

随机推荐

  • 为什么在具有多个接口的对象中实现 QueryInterface() 时需要显式向上转换()

    假设我有一个实现两个或多个 COM 接口的类 class CMyClass public IInterface1 public IInterface2 我看到的几乎每个文档都表明 当我为 IUnknown 实现 QueryInterface
  • 从html文本中关闭库dom节点

    我有一个 html 文本 例如 div class a span 1 span div 2 div div 闭包库中是否有函数可以获取这样的字符串作为输入并返回 DOM 树以插入到文档中 Closure库提供的功能goog dom safe
  • 将 HtmlDocument.DomDocument 转换为字符串

    如何将 HtmlDocument DomDocument 转换为字符串 这个例子有点复杂 但是 假设你有一个名为Form1 带有一个名为的 WebBrowser 控件webBrowser1 变量content将包含形成文档的标记 priva
  • 如何使用单个replaceAll找到Java中两个字符串共有的字符?

    所以假设我有 String s 1479K String t 459LP 我想回来 String commonChars 49 两个字符串之间的公共字符 显然 可以使用如下标准循环来完成 String commonChars for i 0
  • 如何在 Android 中以编程方式添加联系人?

    我已经尝试过 但未添加联系人 ContentResolver cr this getContentResolver ContentValues cv new ContentValues cv put ContactsContract Com
  • Git合并忽略空格[重复]

    这个问题在这里已经有答案了 可能的重复 git 空格问题 我怎样才能设置不报告纯粹由于合并时的空格而导致的冲突 如下所示 lt lt lt lt lt lt lt HEAD open RESDBFILE lt this day result
  • SCTP 和 webrtc

    我看到 SCTP 将用于从 Chrome 31 开始的数据通道 并且根据这个 google group thread 基于 RTP 的正式通道有时将在 2014 年 2 月被弃用 https groups google com forum
  • 如何使用 etrace 和动态库来按时间顺序跟踪 C++ 中的函数调用?

    背景 我有一个大型模拟工具 我需要了解它的逻辑行为 为了做到这一点 如果我有函数调用的时间顺序 我会得到最多的帮助 作为一个最小的工作示例 我在网上找到了很多工具 比如Cyg分析器 and etrace 我在寻找解决方案时变得非常痛苦 以至
  • 如何修改传递给自定义 CMake 目标的环境变量?

    也许我错过了一些明显的东西 但我似乎无法弄清楚如何显式设置通过启动的进程可以看到的环境变量add custom target 我尝试了以下方法 set ENV PATH C Some Path ENV PATH add custom tar
  • 如何在 SQL Server 的 log4net 配置中使用存储过程进行日志记录

    我该如何更新commandText以及存储过程的参数部分 以便我可以通过 log4net 将错误记录到 SQL Server 中 我使用的是 SQL Server 2008 我的附加程序配置如下所示
  • Flask SQLAlchemy 设置动态 URI

    我有一个在 WSGI 下提供的 Flask 应用程序 其中数据库 URI 随着时间的推移而变化 每两个小时 URI 就会切换到另一个数据库 我利用这段时间填充一个数据库 而另一个数据库则为应用程序提供数据 我很难弄清楚如何最好地配置会话 以
  • 如何对文件执行 SHA1 哈希?

    如果我有一个文件想要监视任何更改 除了查看文件日期戳等 我如何对其内容执行 SHA1 哈希 I think这就是 GIT 所做的 所以我只想学习如何做 using FileStream stream File OpenRead C File
  • z-index 和 Javascript 事件

    我有几个彼此重叠的 div 具有不同的 z index 值 浏览器的默认行为似乎是触发绑定到最顶部 z index div 的事件 IE 我有多个onclick每个 div 都有一个 但当单击该区域时只有顶部的一个被触发 有没有一种方法可以
  • MVVM - RaisePropertyChanged 将代码变得一团糟

    MVVM 新手 请原谅我的无知 我认为我使用它是正确的 但我发现我的 ViewModel 有太多这些 RaisePropertyChanged SomeProperty 每次我设置一个属性时 我都必须提高那个该死的属性的变化 我怀念那些我可
  • 如何告诉 Proguard 混淆类名

    我希望混淆类名 我在 Proguard cfg 中有这一行 keepclasseswithmembers class public static
  • 使用 Spring 加载属性(通过系统属性)

    我的问题如下 I have server properties针对不同的环境 这些属性的路径是通过名为的系统属性提供的propertyPath 我该如何指导我的applicationContext xml加载给定的属性propertyPat
  • 什么是头文件和库文件? [复制]

    这个问题在这里已经有答案了 可能的重复 头文件和库有什么区别 谁能告诉我头文件和库文件的实际含义是什么以及它们的区别 例如 我们在程序中包含扩展名为 h 的头文件 它只是定义 但实际的实现是在库文件中定义的 这是在链接阶段完成的 这就是人们
  • C# 中 ++i 与 i += 1 有性能差异吗?

    i a 应等于 i i a 在 a 1 的情况下 据说它的效率不如 i 因为它涉及更多的内存访问 或者编译器会让它与 i 完全相同吗 答案很简单 C 编译器将 C 源代码转换为 IL 操作码 没有专用的 IL 操作码可以执行与 运算符等效的
  • 存储为 BINARY XML 时 Oracle XMLType 有多大

    Oracle 文档声称它将 XMLType 存储为 BINARY XML 比存储为 CLOB 更紧凑 但是我如何知道二进制 xml 占用了多少空间呢 CREATE TABLE t x XMLTYPE XMLTYPE x STORE AS B
  • logback - 重新映射特定记录器的日志级别

    我有一个 logback 配置 其中有一个带有阈值过滤器的附加程序