鉴于我陷入了 SLF4J 和 java.util.Logging 的困境,最佳解决方案是什么?

2024-02-19

情况:我们使用带有异步附加程序的 SLF4j 和 Log4j 2 问题是我们还使用 JSF,它使用java.util.Logging。我看到各种关于使用性能的令人发指的警告jul-to-slf4j因为你不能就这么放弃java.util.Logging因为它在 JDK 中并且因为...这是文档的内容http://www.slf4j.org/legacy.html http://www.slf4j.org/legacy.html says:

“...因此,j.u.l. 到 SLF4J 的转换会严重增加禁用日志语句的成本(60 倍或 6000%),并显着影响启用日志语句的性能(总体增加 20%)。从 logback 版本 0.9.25 开始,在 LevelChangePropagator 的帮助下,可以完全消除禁用日志语句 60 倍的翻译开销。”


我认为最佳解决方案是承受 20% 的性能损失。如果不完全替换 JUL 类,则 LogRecord 第一次离开 JUL 时会使用 Handler。您还需要编写自己的 LevelChangePropagator 版本,以便 Log4J2 中日志级别的更改(例如重新配置)反映在 JUL 记录器中。 (否则 60 倍命中将破坏禁用日志语句的性能。)

您可以用自己的类(直接使用 SLF4J 或 Log4J2)替换 JUL 类,但由于 JUL 不在 Java 认可标准覆盖机制涵盖的包列表中,因此您实际上是在谈论在备用 JVM 上运行或关闭其维护复杂性。

您可以推出自定义 JSF 实现,可能是采用开源实现并将所有 JUL 调用替换为 SLF4J 调用。您可以避免性能受到影响,而且不会像替换 JUL 那样困难。您仍然会维护 JSF 分叉,尽管如果您限制更改,那么维护分叉可能不会太糟糕。它也不会涵盖任何其他调用 JUL 的代码。

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

鉴于我陷入了 SLF4J 和 java.util.Logging 的困境,最佳解决方案是什么? 的相关文章

  • 转换 LOG4J >> SLF4J + logback

    我目前的任务是将所有出现的 LOG4J 更改为 SLF4J 包括必要时的 logback 我已经设法将所有旧的 log4j xml 转换为 logback xml 并强制使用 logback 附加程序 但是 我刚刚发现代码中的一行还无法转换
  • 根据某些条件登录到不同的文件

    我们有一个应用程序 其中我们有一个条件 根据条件 如果条件为真 那么我们会将一些日志消息写入一个文件 否则我们会将消息记录到另一个文件 并且日志记录应该根据条件而不是根据日志级别进行 dropwizard 如何使用 yaml 文件 这是开箱
  • 来自 Kafka Producer 的控制台消息过多

    如何控制 Kafka 生产者或消费者的控制台日志记录级别 我在 Scala 中使用 Kafka 0 9 API 每次send on the KafkaProducer被调用时 控制台给出如下输出 这是否表明我没有KafkaProducer设
  • 使用 Spring 配置文件设置系统属性

    配置 Spring 2 5 Junit 4 Log4jlog4j 文件位置是从系统属性指定的 log location 在运行时 使用 D java 选项设置系统属性 一切都很好 问题 我需要什么 在单元测试时 未设置系统属性 且未解析文件
  • 如何使用 log4j2 Commons 日志桥

    我想将 log4j2 Commons Logging Bridge 与 commons 1 2 一起使用 我尝试使用如下内容 import org apache logging log4j jcl LogFactoryImpl public
  • Java Logger:创建以轮转数+.log为后缀的文件

    我正在使用 java util logging 包中的 Java Logger 这就是我当前创建记录器的方式 FileHandler fileHandler new FileHandler filePath 5242880 5 true f
  • 如何配置 gradle 仅使用 logback-classic 进行 Android 中的单元测试?

    我有一个使用 slf4j logback 的 Android 应用程序 Gradle 文件如下所示 compile com github tony19 logback android core 1 1 1 6 exclude group c
  • 套接字附加程序 - 基本示例一步一步[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何仅在 log4j 中记录警告

    在 Struts 2 应用程序中 我们使用 log4j 进行日志记录 我只想记录警告 但是当我尝试在 log4j properties 中使用时 log4j rootLogger warn stdout 它也打印错误和致命日志 我只想要警告
  • 将 logback-access 与 Google App Engine (GAE) 结合使用

    我正在开发一个使用 GAE 作为移动应用程序后端的项目 我们希望在项目中实现真正良好的日志记录 我花了很多时间阅读 log4j logback classic logback access java util logging JUL 和 s
  • 如何在 log4j 中启用包级别日志记录

    谁能告诉我 log4j 中的包级别日志记录是什么 以及如何实现这一点 今天我的面试问题无法回答 即使我在谷歌中也没有找到好的解决方案 太感谢了 包级别日志记录是 log4j 的标准日志记录 使用 log4j 配置 您可以指定包和关联的级别
  • Grails Log4J 未登录生产环境

    我有一个 Grails 1 3 7 应用程序 并尝试在配置中设置 log4j 以用于生产 log4j 设置在开发中很好 但我无法在生产中显示任何内容 我正在尝试制作一个滚动文件等 但我无法显示任何内容 我什至在 信息 级别进行了配置 这样我
  • Maven 记录器的 SLF4J 桥

    我正在编写 Maven 3 x 插件 并想使用 SLF4J 和 Logback 进行日志记录 我发现了 Maven Logger 的一些 SLF4J 绑定 http www jcabi com jcabi maven slf4j index
  • grails 中的 log4j:在附加程序配置中使用变量时打印错误

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

    我为我的应用程序编写了一个愚蠢的记录器 它将信息 警告和严重消息写入日志文件 前一段时间它工作得很好 但突然间 它无缘无故地停止工作了 如果日志文件不存在 它会继续创建该文件 但不写入任何内容 我找不到它现在不起作用的原因 我会感谢一些帮助
  • log4j 中的异常深度

    我的 Myfaces 2 应用程序遇到实例化异常 但是通过 log4j 打印的异常会切断堆栈跟踪的其余部分 这是我所看到的 javax faces FacesException java lang InstantiationExceptio
  • 如何禁用 Spring 日志记录 DEBUG 消息?

    我正在开发一个简单的桌面应用程序 不是网络应用程序 这是我的log4j properties log4j rootCategory INFO stdout log4j appender stdout org apache log4j Con
  • Spark 执行器 STDOUT 到 Kubernetes STDOUT

    我在 Spark Worker 中运行的 Spark 应用程序将执行程序日志输出到特定文件路径 worker home directory app xxxxxxxx 0 stdout I used log4j properties将日志从
  • 如何使用 SLF4J 和 Log4j2 记录 FATAL(或任何自定义日志级别)

    我有那些具体的要求 需要能够登录FATAL level 需要使用SLF4J 需要使用Log4j2 现在 这是我的执行 final Logger logger LoggerFactory getLogger HelloWorld class
  • 您能让 Tomcat 6 stdout.log 文件表现得像 log4j DailyRollingFileAppender 吗?

    我们使用的是 Tomcat 6 的 Windows 安装 默认情况下 我们应用程序的 log4j 输出将转到 catalina base logs stdout log 文件 该日志文件仅在我们重新启动 Tomcat 时滚动 并且文件名始终

随机推荐

  • AlarmManager 的奇怪行为

    我有 2 个 BroadcastReceiver 和 2 个意图 我想单击一个按钮 5m 后开始广播 1 10m 后开始广播2 发生的情况是它们在我单击后 10m 开始 我的猜测是 意图不是唯一的 但我为每个人设置不同的reqeustCod
  • 如何在视觉代码中使用图像它不起作用?

    Image is not showing in browser using the image tag where am i wrong i want to add image in web and i am unable to do it
  • 服务耗尽 TCP 连接

    我有一个使用 c net 4 0 创建的 Windows 服务 它是一些东西的监视器 它上面有一个计时器 并且有一个计时器每 5 分钟运行一次 所以它有一个定时器控件 并且在定时器中有一个Elapsed事件 private void Tim
  • 使用 nginx 缓存 POST 响应:我应该将 Cache-Control 标头转发到客户端吗?

    我们的系统使用 POST 请求来预加载资产列表 给定相同的资产标识符列表 服务器将使用相同的资产数据列表进行响应 由于标识符列表可能非常长 它实际上是包含 JSON 列表的多部分请求 因此我们使用 POST 而不是 GET 尽管它is幂等的
  • 使用 pygame 通过按键结束循环

    我在 Ubuntu 上使用 PyGame 我想创建一个 while 循环 当用户按下键盘上的任何按钮时结束 这段代码不会离开循环 Eclipse 不会给出任何错误和警告 但永远不会离开循环 怎么了 import time import py
  • 具有不同参数的特征的 new() 方法

    我正在尝试使用具有不同内部参数的各种实现来创建一个特征 pub trait ERP fn new gt Self fn sample self gt f64 pub struct Bernoulli p f64 impl ERP for B
  • 如何编写Activerecord/Arel交集查询

    我在 PSQL 中得到了这个工作 SELECT profiles id FROM profiles INNER JOIN integration profiles ON integration profiles profile id pro
  • sim800 在指挥所数据到服务器

    我对向远程服务器发送数据感到困惑 我能够发送发布请求 但不确定如何添加服务器随后接收的数据 我已经浏览了数据表http www jarzebski pl datasheets SIM900 https 121018 1 00 pdf htt
  • MySQL 中空连接上的 group_concat

    我有以下问题 我有两个表 简化 User Role ID
  • 如何设置底部导航的高度

    所以由support V25 我们有一个名为底部导航的新组件 遵循设计指南 底部导航elevation应该8dp https material io guidelines components bottom navigation html
  • 使用 ymm 寄存器作为“类似内存”的存储位置

    考虑 x86 中的以下循环 on entry rdi has the number of iterations top some magic happens here to calculate a result in rax mov arr
  • 为什么我在 BBEdit 中的搜索导致“堆栈溢出”错误?

    我对 堆栈溢出 错误感到困惑 堆栈空间不足 应用程序错误代码 12246 当我执行 全部替换 时 我进入 BBEdit 搜索 article eprint article book r pmid eprint article book r
  • 限定 BigQuery 标准 SQL 中的等效子句

    BigQuery Standard SQ 中是否有 Teradata 的等效 Qualify 子句 我需要它 因为我们不能在Where Having 子句中使用分析函数 它已经发布了 在撰写本文时是 pre GA 现在是 GA 正如下面 R
  • 如何在将应用程序语言更改为阿拉伯语时显示阿拉伯语键盘?

    我有一个支持阿拉伯语和英语的移动应用程序 因此 为此 我使用两个单独的故事板在更改语言的同时从右向左翻转布局 不确定为阿拉伯语和马拉雅拉姆语使用两个单独的故事板是否是一个好主意 请建议任何其他更好的解决方案 但事实并非如此 我希望向用户展示
  • MYSQL、PHP插入数据库中的多个表

    我正在尝试将信息插入数据库中的多个表中 我已设法使用以下方法使其正常工作 query INSERT INTO users grp email college id tutor year password register date VALU
  • 将数据帧拆分为固定大小的行

    我有一堆长度不同的数据帧 范围从大约到 15 000 至 500 000 对于每个数据帧 我想将它们分成更小的数据帧 每个数据帧有 300 行 我将对其进行进一步处理 我怎样才能做到这一点 This 按行数拆分数据框 https stack
  • 解析和 Facebook SDK“Bolts”框架错误

    我有一个安装了 Parse 和 Facebook 框架的应用程序 Parse 是通过将文件拖动到项目的 Frameworks 文件夹并选择 如果需要则复制 来安装的 而 Facebook SDK 则是通过拖动而不选择复制选项来安装的 两者都
  • C# 将 Lambda 表达式作为方法参数传递

    我有一个 lambda 表达式 我希望能够传递和重用它 这是代码 public List
  • ms-access 本地化和默认布尔值

    我们的访问客户端即时生成 SQL 插入 更新和删除指令 并在 MS SQL Server 上发送 大多数用户拥有 Access 2007 的运行时版本 少数用户使用完整的 MS Access 版本 2003 或 2007 今天早上 我们国外
  • 鉴于我陷入了 SLF4J 和 java.util.Logging 的困境,最佳解决方案是什么?

    情况 我们使用带有异步附加程序的 SLF4j 和 Log4j 2 问题是我们还使用 JSF 它使用java util Logging 我看到各种关于使用性能的令人发指的警告jul to slf4j因为你不能就这么放弃java util Lo