深圳网站制作建设哪家专业广告制作专业

diannao/2026/1/19 13:43:34/文章来源:
深圳网站制作建设哪家专业,广告制作专业,政务网站优化,nas使用wordpressslf4j 记录日志文件SLF4J是一个非常流行的日志记录外观#xff0c;但是#xff0c;就像我们使用的所有库一样#xff0c;我们有可能以错误的方式或至少以一种非最佳方式使用它。 在本教程中#xff0c;我们将列出常见的日志记录错误以及如何使用FindBugs检测到它们。 我们… slf4j 记录日志文件 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.htmlslf4j 记录日志文件

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

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

相关文章

2019广东省工程建设网站通辽网站建设通辽

目录 1、按位与( & ) 2、按位或( | ) 3.按位异或( ^ ) C语言中的位操作符有以下: & | ^//按位与 //按位或 //按位异或 位运算符是计算两者之间的补码,然后得到的是计算后补…

微信扫一扫抽红包在哪里做网站做网站和app哪类商标

解析模板编译template的背后发生了什么一、📑初识模板编译1、vue组件中使用render代替template2、模板编译总结二、✏️感受模板编译的美1、with语法(1)例子展示🌰(2)知识点归纳三、📈编译模板1…

做网站必备软件自己做的网站怎么发到网上

我试图在PHP中发送HTML电子邮件,但它始终显示电子邮件程序中电子邮件的源代码。但它应该将html电子邮件呈现为html,而不是将源代码显示为电子邮件内容。尝试使用sendmail发送/发送html电子邮件,但显示电子邮件的源代码我把我的邮件是这样的&a…

外卖网站建设价钱房产网二手房

文章目录 1.二叉树层序遍历 2.完全二叉树的判断 文章内容 1.二叉树层序遍历 二叉树的层序遍历需要一个队列来帮助实现。 我们在队列中存储的是节点的地址,所以我们要对队列结构体的数据域重定义, 以上代码 从逻辑上来讲就是1入队,1出队&am…

兰州网站建设模板云南网官网

一、背景 qemu单步调试arm64 linux kernel-CSDN博客介绍了如何单步调试kernel, 但是我们经常写一些测试driver, driver的部分如何调试? 二、环境准备 调试driver 就需要准备一个简单的driver, 这里用最简单的hello world来演示如何调试&am…

如何知道一个网站是谁做的wordpress 搭网站

什么是metadata表 Metadata表即Hudi元数据表,是一种特殊的Hudi表,对用户隐藏。该表用于存放普通Hudi表的元数据信息。Metadata表包含在普通Hudi表内部,与Hudi表是一一对应关系。 元数据表的作用 ApacheHudi元数据表可以显著提高查询的读/写性能。元数据表的主要目的是消…

东莞万江网站制作台州网站搜索优化

优先级类型 React内部对于优先级的管理,贯穿运作流程的4个阶段(从输入到输出),根据其功能的不同,可以分为3种类型: 1 )fiber优先级(LanePriority) 位于 react-reconciler包,也就是L…

免费做图片的网站有哪些网站建设风格

原文在简书首发:http://www.jianshu.com/p/badf412db4e7lua-cmsgpack是一个开源的MessagePack实现方式、纯C的库,没有任何其它依赖,编译后可以直接被lua调用,目前主要支持Lua5.1/5.2/5.3 版本。1、什么是MessagePack?-…

高端网站定制站广西网站建设渠道

目录 一、前言 二、代码 一、前言 有些时候我们需要开启或暂停一些服务,比如说开启Apach或暂停MySQL服务等,最近工作中也开发了这方面的功能,记录下来怎样使用PHP语言来开启或暂停Apache、MySQL服务的运行状态。 这种方法也适用其他服务。…

淘客网站备案wordpress能开发商城网站吗

1. 元件基本介绍 2. 基础元件的使用 3. 表单型元件的使用 4. 菜单与表格元件的使用 使用:如果想使用某个元件,我们只需要将它从元件库中拖入画布摆放即可。 - 对齐:默认情况下,两个矩形元件并排摆放,中间的边框为两…

ps制作网站背景邹城网站定制

一个三电源切换电路 电路描述 1、Q1、Q2为NMOS,Q3、Q4和Q5为PMOS管,D1为二极管。 2、BAT1和BAT2为电池,BAT2的容量比BAT1大,VIN_5V为外部电源,VOUT为输出,给系统供电。 3、VOUT会从优先级高的电源取电&a…

重庆专业企业建设网站网络营销方案范文3篇

原文链接&#xff1a;https://blazor-university.com/components/capturing-unexpected-parameters/捕获意外参数源代码[1]之前我们已经看到了如何使用特定名称声明参数和级联参数。例如&#xff0c;一个将 <img> 元素包装在一些自定义 HTML 中的自定义组件。<div cla…

企业官方网站如何做蓝v认证上海住房和城乡建设局网站

111转载于:https://www.cnblogs.com/zoeeying/p/10139131.html

自助建站的一般流程西安旅游攻略必去景点

宝塔一键修改mysql数据库存放路径&#xff0c;更改默认数据目录脚本&#xff01;该shell脚本仅限于宝塔bt.cn linux面板使用&#xff0c;希望对有需要的朋友有所帮助&#xff0c;如有问题请留言&#xff01;主要参数功能:1.默认修改数据库存放路径sh mysql_Transfer.sh2.还原数…

郑州做网站外包的公司十堰吧

在 Linux 中开启 Flask 项目持续运行 在部署 Flask 项目时&#xff0c;情况往往并不是那么理想。默认情况下&#xff0c;关闭 SSH 终端后&#xff0c;Flask 服务就停止了。这时&#xff0c;您需要找到一种方法在 Linux 服务器上实现持续运行 Flask 项目&#xff0c;并在服务器…

网站编排百度热度榜搜索趋势

在 CMake 中&#xff0c;target_include_directories 命令用于向特定目标&#xff08;如可执行文件或库&#xff09;添加包含目录&#xff0c;以便编译器能够找到特定目标所需的头文件。 基本语法 target_include_directories(target_name[SYSTEM] [BEFORE]directory1[direct…

珠海做网站公司有哪些wordpress 删除demo

一、前言 上周工作遇到了一个需求&#xff0c;同步多个省份销号数据&#xff0c;解绑微信粉丝。分省定时将销号数据放到SFTP服务器上&#xff0c;我需要开发定时任务去解析文件。因为是多省份&#xff0c;服务器、文件名规则、数据规则都不一定&#xff0c;所以要做成可配置是有…

天梭手表官方网站word怎么做网页

schoolcms // 版本信息 const THINK_VERSION 3.2.3; ThinkPHP3.2完全开发手册 http://document.thinkphp.cn/manual_3_2.html

做网站需要绑定电脑ip吗中信建设四川分公司招聘

一、缩短访问路径 1、如图访问该文件路径 没有缩短之前&#xff0c;访问的路径是 http://localhost/zerg_new/public/index.php/api/v1/banner/1 缩短后&#xff0c;访问的路径是 http://z_new.cn/api/v1/banner/1 2、缩短路径步骤 本机apache配置&#xff0c;小编使用的…

邢台网站制作哪里有建设完网站成功后需要注意什么

锯齿形斜纹组织图&#xff1a; 分析&#xff1a; 前半齿长度k&#xff0c;表示山谷到山峰的列数&#xff0c;也就是锯齿的宽度&#xff1b; 锯齿飞数s&#xff0c;表示山峰到山峰的行数&#xff0c;也就是锯齿的高度。 起始点相差4格&#xff0c;也就是第一部分整体向上移动…