From fd765681186b5e06ce1cb8ffa84e4fa83c029774 Mon Sep 17 00:00:00 2001 From: xwjie <121509092@qq.com> Date: Fri, 22 Dec 2017 21:37:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a271f29..5a3b3d9 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,9 @@ if (opType == CREATE) { 如果没有打印optype的值,出了问题你只能从前找到后,看optype是什么了,很浪费时间。 -> 重要建议:养成把不合法参数抛出异常的好习惯,抛异常的时候把对应的非法值抛出来。如上面例子里面的非法值opType。 +> 重要建议:养成增加else语句,把不合法参数抛出异常的好习惯。、 + +> 抛异常的时候把对应的非法值抛出来。 ## 修改操作需要打印操作的对象 @@ -105,7 +107,7 @@ logger.info("query docment done, size:" + docList.size()) 有时候,业务量大的系统要找到某一个用户的操作日志定位问题非常痛苦,每一个日志上加用户名又低效也容易漏掉,所以我们要在更高层级上解决这些共性问题。 -我们使用log4j的 `MDC` 功能达成这个目的。在用户登录后,设置用户信息的时候,把用户标志放到 `MDC` 中。 +我们使用log4j的 `MDC` 功能达成这个目的。在用户登录后,把用户标志放到 `MDC` 中。 ```Java private final static ThreadLocal tlUser = new ThreadLocal<>(); @@ -134,10 +136,12 @@ public static void setUser(String userid) { ![日志](/pictures/log1.png) > 没有用户信息的时候并不会报错,而是空串。 + > 不要一开始就关注日志级别和日志性能,规则越多越难落地。 + > 必须记得清空。 -## 集群环境,在静态服务器增加配置,返回处理机器的信息到响应头 +## 集群环境下需要在静态服务器增加配置,返回处理机器的信息到响应头 配置后可以直接找到代码在那个机器上运行,快速定位。举例,`Nginx` 集群最简配置(主要使用 `$upstream_addr`) : @@ -166,12 +170,13 @@ server{ ![nginx](/pictures/nginx.png) + # 优雅编码 - 参数校验和国际化规范 请阅读 [我的编码习惯 - 参数校验和国际化规范](https://zhuanlan.zhihu.com/p/29129469) 。 1. 调用自己的校验函数 -2. 业务代码任何地方,参数上都不要出现local,messagesource +2. 业务代码任何地方参数上都不要出现local,messagesource 3. 异常信息里面,不正确的参数值要提示出来,减少定位时间 4. 国际化参数不要放到每一个url上 @@ -196,3 +201,4 @@ server{ 1. 不要养成面对debug编程,用日志代替debug 2. 不要一上来就做整个功能测试,要一行一行代码一个一个函数测试 3. 谨慎捕获异常和加空判断,加了空判断就要测试为空和不为空二种情况 +4. 日志也是代码的一部分,提交代码前先运行看一遍操作日志。