当前位置: 首页 > 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://www.huolong8.cn/news/240739/

相关文章:

  • wordpress零基础建站教程英文网站google推广
  • 青岛市做网站济南学习做网站
  • 初学者的网站建设cms开发语言有哪些
  • 陕西省建设厅管理中心网站国内现货交易平台
  • 网站整体设计风格怎么查域名服务商
  • 重庆做网站公司电话网店网络营销与推广策划书
  • 自适应手机网站开发手机网站建设 移商动力
  • 怎么看一个网站用什么语言做的青岛网站推广 软件
  • 一个网站不兼容ie怎么做03340 网站建设与管理
  • 桂林论坛网站有哪些前端工程师招聘
  • wordpress资讯站免费软件看小说上门龙婿叶辰
  • 宁波网站推广方式定制公司怎么把文章导入wordpress
  • 族谱网站建设禁止百度收录的网站
  • 宁波快速建站公司icp网站备案系统
  • 辽宁智能建站系统价格如何做本地门户网站
  • 怎样建立自己的销售网站织梦小说网站
  • 做彩票网站是违法的吗品牌英语
  • 移动网站建设模板淄博网站制作服务
  • 佛山市品牌网站建设价格设计网站公司的账务处理
  • 番禺区移动端网站制作H5 网站
  • 罗湖商城网站建设哪家服务周到培训心得
  • .案例 商务网站的推广策略常见的导航网站有哪些
  • 电商网站设计欣赏阿里云oss可以做网站
  • 西安微动免费做网站学院网站建设
  • 快件网站建设郑州高端建站
  • 将网站发布到微信小程序怎么做wordpress文章发布函数
  • 朝阳市做网站网站建设系统开发感想与收获
  • 推荐西安知名的集团门户网站建设公司wordpress点击显示微信二维码
  • 企业建站系统模板苏州微网站建设
  • 建设网站总结报告漳州做网站配博大钱少a