淄博服装网站建设十大互联网装修平台

web/2025/9/28 10:43:37/文章来源:
淄博服装网站建设,十大互联网装修平台,网站制作用什么语言,洛阳网站建设网站建设SLF4J是一个非常流行的日志记录外观#xff0c;但是#xff0c;就像我们使用的所有库一样#xff0c;我们有可能以错误的方式或至少以非最佳方式使用它。 在本教程中#xff0c;我们将列出常见的日志记录错误以及如何使用FindBugs检测到它们。 我们还将在相关时提及PMD和S… SLF4J是一个非常流行的日志记录外观但是就像我们使用的所有库一样我们有可能以错误的方式或至少以非最佳方式使用它。 在本教程中我们将列出常见的日志记录错误以及如何使用FindBugs检测到它们。 我们还将在相关时提及PMD和Sonar Squid检查。 我们将使用两个外部的FindBugs插件它们将日志检测器添加到FindBugs。 第一个是Kengo Toda的SLF4J only插件 其中仅包含SLF4J检测器。 第二个插件是流行的FB Contrib 它包含许多测井仪。 有关如何使用FindBugs插件的信息请参阅以下文章 [Maven] https://gualtierotesta.wordpress.com/2015/06/14/tutorial-using-findbugs-with-maven/ [NetBeans] https://gualtierotesta.wordpress.com/2015/06/07/findbugs-plugins/ 注意在所有示例中我们将假定以下导入 import org.slf4j.Logger; import org.slf4j.LoggerFactory;1.记录仪定义 错误的方法 W1a. Logger log LoggerFactory.getLogger(MyClass.class); W1b. private Logger logger LoggerFactory.getLogger(MyClass.class); W1c. static Logger LOGGER LoggerFactory.getLogger(AnotherClass.class); 正确方法 C1a. private static final Logger LOGGER LoggerFactory.getLogger(MyClass.class); C1b. private final Logger logger LoggerFactory.getLogger(getClass()); 一般规则 记录器应该是最终的且私有的因为没有理由与其他类共享或重新分配它。 相反对于记录器是否应该是静态的没有普遍的协议。 SLF4J插件支持非静态版本C1b而PMD“ LoggerIsNotStaticFinal”规则和Sonar鱿鱼规则S1312更喜欢静态记录器C1a因此这两个选项均应视为有效。 附加信息 [SLF4J常见问题解答] http://slf4j.org/faq.html#declared_static [Apache Commons静态日志] http://wiki.apache.org/commons/Logging/StaticLog 。 请注意 在静态版本C1a中记录器名称通常使用大写字母作为所有常量字段。 否则PMD将报告“ VariableNamingConventions”违规行为。 在这两种情况下建议的名称都是“ logger / LOGGER”而不是“ log / LOG”因为某些命名约定会避免使用太短的名称少于四个字符。 而且log是动词更适合于方法名。 W1c是错误的因为我们指的是一个类AnotherClass它不是定义记录器的类。 在99的情况下这是由于从一类到另一类的复制粘贴所致。 相关的FindBugsSLF4J插件检查 SLF4J_LOGGER_SHOULD_BE_PRIVATE SLF4J_LOGGER_SHOULD_BE_NON_STATIC SLF4J_LOGGER_SHOULD_BE_FINAL SLF4J_ILLEGAL_PASSED_CLASS 2.格式字符串 错误的方法 W2a. LOGGER.info(Obj myObj); W2b. LOGGER.info(String.format(“Obj%s”, myObj)); 正确方法 C2. LOGGER.info(Obj{},myObj); 一般规则 格式字符串第一个参数应为常量没有任何字符串串联。 动态内容示例中的myObj值应使用占位符{}添加。 动机很简单无论是否记录消息我们都应在记录器建立后延迟记录消息的创建具体取决于当前的记录级别。 如果我们使用字符串连接则无论采用哪种日志记录级别都会以任何方式构建消息这会浪费CPU和内存资源。 相关的FindBugsSLF4J插件检查 SLF4J_FORMAT_SHOULD_BE_CONST格式应为常数 SLF4J_SIGN_ONLY_FORMAT格式字符串不应仅包含占位符 相关的FindBugsFB Contrib插件检查 LO_APPENDED_STRING_IN_FORMAT_STRING方法将串联的字符串传递给SLF4J的格式字符串 3.占位符参数 错误的方法 W3a. LOGGER.info(Obj{},myObj.getSomeBigField()); W3b. LOGGER.info(Obj{},myObj.toString()); W3c. LOGGER.info(Obj{},myObj, anotherObj); W3d. LOGGER.info(Obj{} another{},myObj); 正确方法 C3a. LOGGER.info(Obj{},myObj); C3b. LOGGER.info(Obj{},myObj.log()); 一般规则 占位符应该是对象C3a而不是方法返回值W3a以便在记录级别分析后推迟对其求值请参见上一段。 在W3a示例中无论日志记录级别如何都会始终调用方法getSomeBigField。 出于相同的原因我们应该避免在语义上与C3a等效的W3b但是它总是在toString方法调用中产生。 解决方案W3c和W3d错误因为格式字符串中占位符的数量与占位符参数的数量不匹配。 解决方案C3b可能在某种程度上具有误导性因为它包括方法调用但只要myObj包含多个字段例如它是一个大型JPA实体但我们不想记录其所有内容时它就很有用。 例如让我们考虑以下类 public class Person { private String id; private String name; private String fullName; private Date birthDate; private Object address; private MapString, String attributes; private List phoneNumbers; 它的toString方法很可能会包含所有字段。 使用解决方案C3a所有它们的值都将打印在日志文件中。 如果不需要所有这些数据则定义如下的帮助方法将很有用 public String log() { return String.format(Person: id%s name%s, this.id, this.name); } 仅打印相关信息。 此解决方案的CPU和内存也比toString轻。 有什么关系 它取决于应用程序和对象类型。 对于JPA实体我通常在log方法中包括ID字段如果需要所有列数据以便让我在数据库中找到记录并且可能是一两个重要字段。 毫无疑问应该记录密码字段和/或敏感信息电话号码…。 这是不使用toString登录的另一个原因。 相关的FindBugsSLF4J插件检查 SLF4J_PLACE_HOLDER_MISMATCH 4.调试消息 重要提示规则4请参阅5条规则文章 指导我们使用受保护的调试日志记录 if (LOGGER.isDebugEnabled()) { LOGGER.debug(“Obj{}”, myObj); } 使用SLF4J如果占位符参数是对象引用请参阅解决方案C3a / C3b则可以使用if来避免代码混乱。 因此使用以下内容是安全的 LOGGER.debug(“Obj{}”, myObj);5.例外 适当的异常日志记录是问题分析的重要支持但很容易忽略它的用处。 错误的方法 W5a. catch (SomeException ex) { LOGGER.error(ex);}.. W5b. catch (SomeException ex) { LOGGER.error(Error: ex.getMessage());}.. 正确方法 C5. catch (SomeException ex) { LOGGER.error(Read operation failed: id{}, idRecord, ex);}.. 一般规则 不要使用getMessage请参阅W5b而不是完整的异常来删除堆栈跟踪信息。 堆栈跟踪通常包括问题的真正原因很容易是底层代码引发的另一个异常。 仅记录消息将阻止我们发现问题的真正原因。 确实在日志消息中显示了重要的信息供将要分析日志文件的人员使用该信息显示了一个文本解释了在引发异常不是异常种类或诸如“错误”之类的消息时我们想要执行的操作我们已经知道有些不良情况发生了。 我们需要知道的是我们在做什么以及在哪些数据上。 C5示例告诉我们我们正在尝试读取具有特定ID的记录该ID的值已与消息一起写入日志。 请注意C5在格式字符串中使用一个占位符但是有两个附加参数。 这不是错误而是一种特殊的模式SLF4J将其识别为异常记录案例最后一个参数在C5示例中为ex被SLF4J视为Throwable异常因此不应将其包含在格式字符串中。 相关的FindBugsSLF4J插件检查 SLF4J_MANUALLY_PROVIDED_MESSAGE消息不应基于异常getMessage 翻译自: https://www.javacodegeeks.com/2016/02/tutorial-correct-slf4j-logging-usage-check.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

珠海网站建设网站品质好的四字词语

目录 一、弧度转角度1、计算公式2、主要函数3、示例代码4、结果展示二、角度转弧度1、计算公式2、主要函数3、示例代码4、结果展示三、归一化到(-PI,PI)1、主要函数<

绵阳网站关键字优化微信视频号怎么推广引流

2024年4月9号PMP每日三题含答案 1.在执行一个潜艇现代化项目期间&#xff0c;客户要求安装新的潜望镜。项目经理必须怎么做&#xff1f; A.检查可行性&#xff0c;准备预算&#xff0c;并获得变更请求批准 B.执行实施整体变更控制过程&#xff0c;获得预算批准&#xff0c;并执…

检察院网站建设情况成都网站建设设计公司排名

Google Guava项目是每个Java开发人员都应该熟悉的库的集合。 Guava库涵盖I / O&#xff0c;集合&#xff0c;字符串操作和并发性。 在这篇文章中&#xff0c;我将介绍Monitor类。 Monitor是一种同步构造&#xff0c;可以在使用ReentrantLock的任何地方使用。 在任何时候&#x…

单页面网站入侵wordpress一直维护

一&#xff1a;问题 有两个规模相同的数组&#xff0c;两个数组相同位置的元素一一对应&#xff0c;现在要将两数组的元素同时打乱顺序&#xff0c;并且乱序后的两数组对应位置元素要保持乱序前的对应关系。 二&#xff1a;方法 采用randperm&#xff08;&#xff09;函数&a…

外贸平台哪个网站最好发布程序后网站有很多

理论知识&#xff1a; &#xff08;1&#xff09;状态机简写为FSM&#xff08;Finite State Machine&#xff09;&#xff0c;也称为同步有限状态机。同步是指状态的变化都是在时钟的边沿发送变化&#xff0c;有限值得是状态的个数是可数的。 &#xff08;2&#xff09;分类&…

有赞微商城是什么seo推广和百度推广的区别

摘要&#xff1a; 昇思MindSpore支持checkpoint和MindIR两种形式的模型保存和加载。 保存和加载模型&#xff0c;便于微调fine-tune和后续的模型推理与部署。 一、环境准备 安装minspore模块 !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc.edu.c…

南京网络推广平台seo顾问张智伟

Acme.sh 是一个开源的脚本&#xff0c;能够从 ZeroSSL、Let’s Encrypt 等证书颁发机构&#xff08;CA&#xff09;获取免费的 HTTPS 证书。该脚本特别简单易用&#xff0c;并且支持多种验证方式。下面将详细介绍使用 Acme.sh 生成、安装和更新证书的各个步骤。 Github地址 使用…

网站开发用框架开发的优缺点淘客网站如何做能加快收录

IE trident Firefox Gecko Google chrome Webkit/blink Safar i Webkit Opera presto转载于:https://www.cnblogs.com/codezhao/p/10451030.html

企业网站建设多少钱网站和软件有什么区别

本文介绍在CentOS 7操作系统上安装Semaphore的方法&#xff0c;安装完后就可以使用Semaphore来管理Ansible Web UI了。一、安装MariaDB数据库和git 2.x参考文章1、安装MariaDB数据库参考文章2、安装git 2.x确认git版本&#xff1a;$ git --versiongit version 2.16.5二、安装An…

网站后台生成文章很慢游戏制作公司

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy code 题目描述 输入3个整数&#xff0c;输出绝对值最大的那个数。 输入 输入包含3个int范围内的整数&#xff0c;用空格隔开。 输出 输出三个数中绝对值最大的数&#xff0c;单独占一行。若绝对值最大的数不唯…

响应式网站模板html什么网站需要数据库

一、&#x1f4dd;功能介绍 基于SpringBoot Vue汽车租赁系统 角色&#xff1a;管理员、普通管理员、用户 管理员&#xff1a;管理员进入主页面&#xff0c;主要功能包括对系统首页、个人中心、用户管理、普通管理员管理、汽车类别管理、汽车信息管理、租车订单管理、取消订单管…

美术馆网站建设网站开发人员的职能

反思: 我考得最炸的一次 怎么说呢?简单的两个题0分,稍难(我还不敢说难,肯定又有人喷我)42分 前10分钟看T1,不会,觉得不可做,完全不可做,把它跳了 最后10分钟看T1,发现一个有点用的性质,仍然认为不可实现 0分 所以T1是什么样的难题呢 即使暴力也有60分,但我楞没想出来暴力怎么打…

模板网站的建设软件开发过程模型

1. 位图结构的实现 /*** 位图数据类型 <br />* 位图以字节的一位为单位进行元素的操作&#xff0c;但是位运算以一个字节整体为运算单位&#xff0c;因此代码中以 bytes[index] 进行运算。* 位图元素的添加即找到相应的位置&#xff0c;将其置为1&#xff0c;实现时将该…

集团网站设计专业团队建设网站需要什么软件

说明&#xff1a;首先我的nacos安装是2.1.1版本&#xff0c;请注意版本问题。另外启动时用dubbo的话必须先启动服务提供者再启动服务使用者&#xff0c;否则会报错&#xff0c;同时也必须开放三个端口&#xff1a;8848&#xff0c;9848&#xff0c;9849 java.lang.IllegalStat…

品牌微信网站定制007工作制

CentOS 6 是 CentOS 项目的一个主要版本。CentOS&#xff08;Community ENTerprise Operating System&#xff09;是一个基于开源的 Linux 发行版&#xff0c;它主要从源代码构建自 Red Hat Enterprise Linux&#xff08;RHEL&#xff09;。CentOS 6 代表了该操作系统的第六个主…

站长素材音效网长春有哪些网络设计公司

1.什么是垃圾回收&#xff1f;垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制。2.什么时候垃圾回收&#xff1f;System.gc()Runtime.getRuntime().gc()上面的方法调用时用于显式通知…

中国建设银行甘肃省分行网站芜湖那里帮人做销售网站

打包前端项目体验 生产环境和开发环境配置上线使用nginx进行代理跨域上线使用后端进行跨域 评估结果 Result 方法软件优点缺点前端跨域webpack直接在前端进行跨域&#xff0c;实质是利用webpack作为代理转发给服务器上线之后不可以用&#xff0c;而且有时候还是需要后端也要…

公司做网站最好wordpress 系统需求

一、名词解释&#xff1a; 我们通过Shell可以实现简单的控制流功能&#xff0c;如&#xff1a;循环、判断等。但是对于需要交互的场合则必须通过人工来干预&#xff0c;有时候我们可能会需要实现和交互程序如ssh服务器等进行交互的功能。而Expect就使用来实现这种功能的工具。E…

中国建站平台wordpress 更改中文

点击上方蓝字关注我们画个板子&#xff0c;要先划圈&#xff0c;把所有笨蛋元器件圈起来。这个圈&#xff0c;就是板子的边框&#xff0c;简称板框。自定义板框形状比较复杂的电路板&#xff0c;一般由专业的CAD结构工程师设计&#xff0c;并提供DWG或者DXF格式的文件给电子工程…