当前位置: 首页 > news >正文

网站弹出文字长兴县城乡建设局网站

网站弹出文字,长兴县城乡建设局网站,广州建设h5网站,wordpress响应式音乐播放器log4j2 无日志记录使用Log4j 1.x并希望避免在某些情况下可能会造成额外的性能影响#xff08;即使实际上未记录该消息#xff09;时#xff0c;通常使用日志记录防护 。 Java的简单日志记录外观 #xff08; SLF4J #xff09;带给Java日志记录的最吸引人的功能之一是能够… log4j2 无日志记录 使用Log4j 1.x并希望避免在某些情况下可能会造成额外的性能影响即使实际上未记录该消息时通常使用日志记录防护 。 Java的简单日志记录外观 SLF4J 带给Java日志记录的最吸引人的功能之一是能够减少需要进行这些日志级别检查的情况的数量 。 在本文中我将探讨如何使用Log4j 2.x的日志记录API更改来实现类似的好处。 下一个代码清单演示了记录长时间运行的操作。 第一个示例在名称为“ slow”的实例上隐式调用toString()方法。 第二个日志记录示例调用了一个长时间运行的方法。 传统无人值守的测井 // Will implicitly invoke slows toString() method logger.debug(NORMAL: slow); // Will explicitly invoke the long-running method expensiveOperation() logger.debug(expensiveOperation()); 在前面的示例中即使实际上未执行任何日志记录这两个日志记录操作也将花费很长时间。 先前代码清单中的日志记录语句仅在日志记录级别为DEBUG或不太明确的日志级别例如TRACE时才实际记录但是即使没有任何记录它们的昂贵操作也将运行。 在Log4j 1.x中有两种方法可以解决此问题。 一种方法通常是最好的方法是尝试重新编写log语句以便不涉及长时间运行的操作 。 如果不切实际例如当需要与长时间运行的操作关联的上下文以使日志消息有用时则可以使用日志保护。 接下来演示在Log4j 1.x中有效的这种方法。 传统的受保护的日志记录 if (logger.isDebugEnabled()) {logger.debug(GUARDED: slow);logger.debug(expensiveOperation()); } 如上一代码清单所示日志防护措施可以有效地防止调用长时间运行的操作即使无论如何也不会记录任何消息。 但是使用日志保护确实会带来一些缺点。 也许最主要的缺点是引入了额外的有些人会说是code肿的代码。 另一个潜在的缺点很少见但更为严重由于条件块和关联块引入了额外的作用域因此更容易在条件块中引入错误代码甚至有可能在依赖于日志记录级别的情况下带来副作用代码块。 最常见的情况之一是日志调用实际上不会记录任何内容但会显着影响性能这是当将对象传递给logger调用或与传递给该字符串的字符串连接时显式或隐式调用对象的toString方法。记录器调用。 在上面的两个代码清单中通过将字符串文字“ GUARDED”与名为“ slow”的变量的隐式调用toString()方法进行连接将字符串传递给logger调用证明了这种情况。 SLF4J 普及了参数化日志记录调用的概念Log4j 2在其日志记录API中提供了类似的支持 。 下面的代码演示了如何使用它。 参数化记录 logger.debug(PARAMETERIZED: {}, slow); logger.debug({}, expensiveOperation()); 当上面的参数化日志记录示例以比DEBUG更特定的日志级别执行时由于参数化日志记录将不会尝试在“ slow”变量上使用隐式toString() 。 但是参数化日志记录无法帮助其他日志记录情况因为尽管进行了参数化日志记录但仍将调用方法expensiveOperation() 。 还要注意尽管参数化日志记录在隐式toString()调用的情况下有所帮助 但在显式toString()调用中却无济于事 。 即使日志记录级别比DEBUG更具体在logger语句中对slow.toString()的调用仍会导致性能slow.toString() 。 Log4j 2.4引入了一种基于Lambda的机制 该机制可用于延迟对传递给logger调用的方法的调用这样如果该语句的记录级别低于当前日志级别则根本不需要执行它们。 。 这表现在下一代码列表其中toString()方法被明确地通过λ表达式称为“慢”变量的对象上并且expensiveOperation方法是通过调用方法的参考 。 Lambda表达式记录 logger.debug(LAMBDA: , () - slow.toString()); logger.debug({}, this::expensiveOperation); 当以上代码的日志级别设置为比DEBUG更具体的级别时由于基于lambda表达式的延迟加载因此不会调用“慢速”对象的toString()方法和expensiveOperation方法。 换句话说类似于该示例与警卫一起使用的方式使用lambda表达式可以防止不必要地执行可能长时间运行的方法除非它们的结果要真正记录下来。 此lambda表达式支持已在2.4版本中添加到Log4j并且当然需要Java 8 。 摘要 Log4j 22.4提供了多种方法来避免在未实际记录消息时对日志语句的性能造成影响。 可以重写日志语句以便根本不记录昂贵的方法包括昂贵的toString()调用。 日志保护可以用来确保仅在实际记录消息时才执行log语句的长时间运行的方法调用。 除非确实记录了消息否则Log4j 2的参数化格式化记录器API可用于消除对隐式toString()方法的调用。 Log4j 2.4的lambda表达式记录器API可用于消除对已记录消息所需的任何操作隐式或显式的调用除非已真正记录了该消息。 翻译自: https://www.javacodegeeks.com/2015/10/better-performing-non-logging-logger-calls-in-log4j2.htmllog4j2 无日志记录
http://wiki.neutronadmin.com/news/240739/

相关文章:

  • 四川省城乡建建设人事考试网站建设网站怎么做
  • 赣州制作网站百度办公网新闻上传网站开发
  • 贵阳网站建设推广网站域名归属权
  • 大连展厅设计公司德阳网站建设优化
  • 网站开发价格评估上海网站建设品牌
  • 建筑网站大图微信公众号登录页面
  • 个人网站cms深圳高品质网站建设服务
  • 没有服务器 怎么做网站wordpress设置网站导航
  • qq空间如何做微网站网站开发 集成包
  • 家电维修怎么自己做网站网易企业邮箱和个人邮箱的区别
  • 手机网站自助建免费的图库网站
  • 网站做的不好做网站公司负责修图吗
  • 设计网站做多大合适wordpress虚拟机
  • 做一个网站的价钱徐汇微信手机网站制作
  • 建设网站目的是什么360建筑网如何删除简历
  • 做淘宝网站需要多大空间一般公司做网站多少钱
  • 怎么自己创建一个网站代码北京h5网页设计
  • 开封网站建设优化留言板网页设计代码
  • 上海企业建站工具wordpress 图片热点
  • 网站建设深圳哪里学楚雄网站制作
  • 文化传媒建设网站网页商城设计商城网站设计案例
  • 免费驾校网站模板长沙企业网站建设
  • 网站后台文章栏目旅游网站设计模版
  • 微网站建设及微信推广方案ppt房产官网查询系统
  • 加强主流网站建设app软件开发平台有哪些
  • 网站定位分析广东网站建设便捷
  • 网站排名怎么做wordpress pdf缩略图不显示
  • 工商网站官网入口求网站制作
  • 网站策划工作条件个人网页模板模板之家
  • 网站的兼容性电脑网址大全2345