jul-to-slf4j 仅适用于特定类别

2024-03-29

我正在 Websphere Application Server 上使用 Primefaces 开发 JSF 项目。 由于 Primefaces 使用 java.util.logging,因此我使用 jul-to-slf4j Bridge 将 Primefacs 日志捕获到我的 Log4J 日志文件中。

但是使用 jul-to-slf4j Bridge,所有 java.util.logging 消息都将位于我的日志文件中,包括常规 Websphere 消息,例如“应用程序已启动”或“服务器已启动”。

是否可以配置 jul-to-slf4j,以便它仅重定向特定消息(例如,来自org.primefaces) 到 SLF4j 并保持其余部分不变?


我找到了一个解决方案,使用java.util.logging.Filter,过滤器只是检查记录器的名称是否以以下开头org.primefaces :

对于此解决方案,必须以编程方式设置 SLF4JBridgeHandler 和 Filter, 使用logging.properties 文件设置它是行不通的。

另外,必须自己创建 SLF4JBridgeHandler,因为 afaikBug http://jira.qos.ch/browse/SLF4J-343,SLF4JBridgeHandler 不尊重开箱即用的过滤器。

SLF4JBridgeHandler slf4jBridgeHandler = new SLF4JBridgeHandler(){
    @Override
    public void publish(LogRecord record) {
         if (getFilter() != null && !getFilter().isLoggable(record)) {
                return;
            }
        super.publish(record);
    }
};

Filter filter = new Filter() {

    @Override
    public boolean isLoggable(LogRecord record) {
        String loggerName = record.getLoggerName();
        boolean loggable = loggerName != null && (loggerName.startsWith("org.primefaces"));
        return loggable;
    }
}; 
slf4jBridgeHandler.setFilter(filter);
java.util.logging.LogManager.getLogManager().getLogger("").addHandler(slf4jBridgeHandler);

不要打电话SLF4JBridgeHandler.removeHandlersForRootLogger()因为这将删除 Websphere 设置的所有其他处理程序!

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

jul-to-slf4j 仅适用于特定类别 的相关文章

  • 包装 slf4j API

    我想将 slf4j 与 Logback 改造为遗留应用程序 好处是 遗留应用程序有自己的日志框架 所以我所要做的就是更改日志框架以记录到 slf4j 而不是 log4j 这就像做梦一样 我很高兴 直到我注意到 Logback 为每个日志事件
  • 如何将 slf4j-over-logback 日志写入 JSON 格式

    我的代码中有以下日志记录语句 import org slf4j Logger public class MySampleClass private static final Logger logger LoggerFactory getLo
  • 如何使用 Spring Sleuth 记录 MDC?

    我有一个基于 Spring boot sleuth 的应用程序 一切都按预期进行 我现在有这样的日志 2017 05 04 17 55 52 226 INFO alert 692d0eeca479e216 c3c8b680dc29ad02
  • slf4j 石英异常

    我正在尝试在项目的一个简单示例中使用石英 我收到以下异常 我不确定这意味着什么 但是我在 POM 文件中将 slf4j 更新为 1 6 1 即使这样仍然出现 SLF4J slf4j api 1 6 x or later is incompa
  • 为 Log4j2 配置 Grails 3

    我们想使用 Log4j2 作为与 grails 3 的日志绑定 从目前我能了解到的情况来看 我们有许多使用各种记录器的从属依赖项 因此我们需要使用 SLF4J API 然后 我们需要将每个 API 重新定向到 Log4j2 绑定 而不是让
  • 将 apache-spark 日志记录发送到 Amazon EMR 集群上的 redis/logstash 的最佳方法 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 Amazon EMR 集群上触发提交作业 我希望将所有 Spark 日志记录发送到 redis logstash 在 EMR 下配置
  • org.slf4j.helpers.NOPLoggerFactory 无法转换为 ch.qos.logback.classic.LoggerContext

    当我在maven m2e 中使用logback时 出现以下错误 环境 JBOSS 7 1 1 maven eclipse 但如果我只是作为主类单独运行 它就可以正常工作 我无法弄清楚为什么会出现此错误 任何人都可以帮助我解决此问题并找到解决
  • slf4j 没有 toString()

    当你做类似的事情时LOG debug Exported product 在 slf4j 中 它最终会在参数上调用 toString 例如product 由于某些原因 我无法在要用作参数的所有类上重写 toString 有些类来自第三方 ja
  • 如何设置 JUnit 测试的日志级别

    我在我的课程中使用 java 日志记录 Example public class MyClass private static Logger logger Logger getLogger MyClass class getName 当我为
  • 为什么 logback 以不同的顺序加载配置并忽略系统属性 (SBT)?

    我一直在尝试解决我的日志记录情况 如何使用 SBT 和 Scala 正确管理开发和生产中的 logback 配置 https stackoverflow com questions 27538717 how to properly mana
  • 使用 Logback 但 Log4j 开始显示 WARN no Appenders

    我正在使用 logback 进行日志记录 但它一直在工作 前几天我开始收到警告 log4j WARN 找不到记录器 org apache axis i18n ProjectResourceBundle 的附加程序 log4j WARN 请正
  • logback每小时回滚时删除MaxHistory之前的日志

    我使用下面的附加程序 我可以看到回滚每小时发生一次 但我提到了
  • 是否可以让 Handler 意识到它已被删除?

    我正在编写一个自定义日志配置类 它设置一个特定的处理程序并将其与根记录器关联 并计划在多个应用程序中使用它 我担心实际的程序代码会删除该处理程序并安装另一个处理程序 有没有一种方法可以让处理程序检测到它已从特定记录器中删除 或者让记录器报告
  • 转换 LOG4J >> SLF4J + logback

    我目前的任务是将所有出现的 LOG4J 更改为 SLF4J 包括必要时的 logback 我已经设法将所有旧的 log4j xml 转换为 logback xml 并强制使用 logback 附加程序 但是 我刚刚发现代码中的一行还无法转换
  • Java Logger:创建以轮转数+.log为后缀的文件

    我正在使用 java util logging 包中的 Java Logger 这就是我当前创建记录器的方式 FileHandler fileHandler new FileHandler filePath 5242880 5 true f
  • 如何使用slf4j和java.util.logging登录tomcat

    我创建了一个在 Tomcat 8 上运行的 Web 应用程序 一如既往 我想使用 slf4j 在本例中 由 java util logging 支持 因为它是 Tomcat 的默认设置 相关依赖是这样的
  • SLF4J 最佳实践

    我正在编写一个库 并使用 sfl4j 来处理日志记录 我认为只要每个机构都可以提供自己的实现 那么我的应用程序提供的日志将得到正确处理 这是个好主意 但我不知道是否必须提供实现作为传递依赖项 示例 如果我只提供
  • grails 中的 log4j:在附加程序配置中使用变量时打印错误

    我在 grails 2 3 4 中使用 slf4j DailyRollingFileAppender 当我尝试使用变量作为 文件 参数的一部分时 grails 总是在应用程序启动时打印一些错误日志 但是我的应用程序的日志消息可以按预期打印到
  • Java util Logger 未写入文件

    我为我的应用程序编写了一个愚蠢的记录器 它将信息 警告和严重消息写入日志文件 前一段时间它工作得很好 但突然间 它无缘无故地停止工作了 如果日志文件不存在 它会继续创建该文件 但不写入任何内容 我找不到它现在不起作用的原因 我会感谢一些帮助
  • 我想创建处理程序来捕获 Tomcat 上 Web 应用程序的所有日志,并且

    我想创建处理程序来捕获 Tomcat 上 Web 应用程序的所有日志 我创建了我的 Handler 类 编译它并安装 CATALINA HOME lib and common loader有这个目录 之后我修改了logging proper

随机推荐

  • ANDROID从url获取内容

    我在使用 Android 时遇到问题 我必须能够从生成内容的 URL 中读取内容 然后将它们放入数组中 分割读取的字符串 我使用了不同的方法 但无法读取该字符串 我能怎么做 这是我现在使用的函数 继续出现字符串 nn va private
  • 具有可比较列表与 TreeSet

    选项 1 创建一个实现 Comparable 的列表 并在每次添加值时使用 collections sort List l 对它进行排序 选项 2 创建一个 TreeSet 它始终保持排序 哪一个会更快 我问这个是因为 List 为我提供了
  • git am 错误:“补丁不适用”

    我正在尝试使用 git 将多个提交从一个项目移动到第二个类似的项目 所以我创建了一个补丁 包含 5 个提交 git format patch 4af51 stdout gt changes patch 然后将补丁移动到第二个项目的文件夹并想
  • 如何在 C# 中使用 SendMessageTimeout 获取窗口标题

    我需要枚举所有打开的窗口并获取它们的标题 但问题是某些窗口属于同一进程但属于不同的线程 该线程被阻塞 等待互斥体 因此 我不能对属于我自己的进程的窗口使用 GetWindowText 因为这将导致 SendMessage 调用 这将阻止我的
  • 向类型类实例添加类约束

    我正在尝试实现康托配对函数 作为 通用 Pair 类型类 如下所示 module Pair Pair CantorPair where Pair interface class Pair p where pi a gt a gt p a k
  • 如何使用 C++ 从 RAM 运行可执行文件?

    如何使用 C 从 RAM 运行可执行文件 可执行文件位于 RAM 中 并且我知道地址 如何从我的程序中调用该程序 这类事情通常来自世界的黑暗角落 结合像metasploit这样的工具 用内存创建进程会很棒 因此一些人尝试重新实现Create
  • 向应用程序小部件发送更新广播

    我有一个带有配置活动的应用程序小部件 我想在单击活动中的 确定 按钮时触发小部件的更新 我写了这段代码 Intent initialUpdateIntent new Intent AppWidgetManager ACTION APPWID
  • 为什么 firefox/chrome 显示的页面与 IE8 不同?

    当我看着 我看到最新版本 with Firefox and Chrome 但是一个旧版本 with IE8 另外 通过屏幕抓取PHP Curl给我一个旧版本 我试过了CTRL 刷新在 IE8 中 但我无法让它向我显示最新版本 无论heade
  • 警告:格式字符串不是字符串文字[重复]

    这个问题在这里已经有答案了 我从以下行收到 格式字符串不是字符串文字 警告 NSString formattedString NSString alloc initWithFormat format arguments valist 我在以
  • 从 Delphi 7 中的 C++ DLL 接收字符串数组

    我正在用 C 创建一个 DLL 它将在 Delphi 7 项目中使用 这个问题与this one https codereview stackexchange com questions 43347 produce an array of
  • 尝试从列表中删除对象时迭代期间的并发修改

    我试图在多个列表中循环 最后比较它们的名称 如果它们不匹配 则将其从列表中删除 但我收到此错误 迭代期间并发修改 虽然我已经复制了原始列表只是为了避免这个错误 但仍然得到它 我尝试的是 globals filteredPollsList p
  • 在 R 中获取生存估计

    我试图获得不同人在特定时间的生存估计 我的代码如下 s Surv outcome 1 outcome 2 survplot survfit s person list 1 plot survplot mark time FALSE summ
  • 什么是serialVersionUID?为什么要使用它?

    当出现以下情况时 Eclipse 会发出警告serialVersionUID不见了 可序列化类 Foo 未声明静态final long 类型的serialVersionUID 字段 What is serialVersionUID为什么它很
  • 如何优化Excel VBA点击url

    VBA 运行时出现运行时错误 70 有时代码运行顺利 但有时则不然 想知道是否有更可靠的代码可以继续 它总是停在If link innerHTML Balance Sheet Then end if Public Sub Get Dim i
  • 如何以编程方式将 QMainWindow 大小调整为其最小大小

    当我有一个带有网格布局的 QMainWindow 时 当用鼠标调整它的大小时 它不会低于其中所有控件正确显示所需的最小尺寸 在我的应用程序中 我有时会以编程方式隐藏控件 但随后窗口保持相同的大小 其余控件看起来分散开来 它们之间的空间太大
  • 将图像文件打开到 WriteableBitmap

    问题就在这里 我想从本地驱动器打开一个文件 然后将其放入 WritableBitmap 中 以便我可以编辑它 但问题是 我无法从 Uri 或类似的东西创建 WritableBitmap 我也知道如何将文件打开到 BitmapImage 中
  • 设置EditText的HINT多行

    我知道我可以更改 EditeText 文本的行数 但我也可以更改 EditText 提示的行数吗 我在网上找不到解决方案 谢谢您的帮助 My Code Override public void onCreateOptionsMenu Men
  • 在控制台窗口中以横向树格式漂亮打印输出

    我有一本使用 Python 创建的字典 d a Adam Book 4 b Bill TV 6 Jill Sports 1 Bill Computer 5 c Bill Sports 3 d Quin Computer 3 Adam Com
  • 为什么我的 scrapy 蜘蛛没有遵循我的项目解析函数中的请求回调?

    我正在抓取一个网站来检查各种产品的库存状态 不幸的是 这需要实际单击产品页面上的 添加到购物车 并检查下一页的消息以确定是否有库存 即它需要解析两个响应 我跟着优秀的文档 http doc scrapy org en latest topi
  • jul-to-slf4j 仅适用于特定类别

    我正在 Websphere Application Server 上使用 Primefaces 开发 JSF 项目 由于 Primefaces 使用 java util logging 因此我使用 jul to slf4j Bridge 将