一定要记录日志!

日志很重要!不能用syso代替日志!一定要记录日志!

 

1.为什么要记录日志

在开发环境中,我们debug时可以使用syso。但是在实际的运行环境中,我们一旦部署了服务,基本上就没有机会去看命令行了。如果这时候出现问题怎么办?我怎么知道哪里出了问题?我怎么把问题记录下来?

所以详细的日志记录就显得很重要了。一旦出现问题,我们可以尝试通过日志去发现,并且解决。所以,一定要养成记录日志的习惯。把以前依赖syso的坏习惯改掉。

我以前一直用的spring等框架,整合log4j之后能自动进行日志输出。现在不允许使用srping了,导致所有地方的日志记录都要手写。可是我已经养成了不写日志的习惯了,现在感觉很不习惯。要好好改正这个毛病才行。

2.最好在哪里进行日志记录?

这里说一下日志记录的细节(使用log4j):

我个人认为,要在dao层中进行日志记录。因为涉及很多实际逻辑部分,在这里进行日志记录,过程会比较详细。

最好在获取参数,实际执行前,实际执行后各进行一次日志记录。如果没有参数,那就只在执行前后记录即可。

比如说,我要写一个方法,需要执行一次查询,使用sql为select * from user where username = ?。

这时候,我会先把传进方法的username参数记录下来,然后在执行sql前把这条sql记录下来,最后再执行sql后把返回结果也记录下来。

如果正常执行了,那么记录返回结果。如果执行错误了,也要记录报错信息。

(1)没有参数的方法

logger.debug(sql);记录了sql

logger.debug(“getDevi_seri_numList:” + list);记录了正确执行的结果

logger.error(“getDevi_seri_numList:”, e);记录了错误信息

(2)有参数的方法

logger.debug(“insertCust_infoPojo:” + insertCust_infoPojo);记录了参数

logger.debug(sql);记录了sql

logger.debug(“insertCust_info:” + ReturnPojo);记录了正确的执行结果

logger.error(“insertCust_info:”, e);记录了错误信息

3.特别注意

logger.error(“getDevi_seri_numList:” + e);和
logger.error(“getDevi_seri_numList:”, e);起到的效果完全是不同的哦!

上面的是void org.apache.log4j.Category.error(Object message)方法,下面的是void org.apache.log4j.Category.error(Object message, Throwable t)方法,明显就是两回事!

上面的那种方法,似乎只是把日志打印在控制台中而已,并没有记录到日志中。下面的那种方法才是实际记录了日志。(这点我没有求证,可能说错了,回头修改吧)

4.总结

记录日志非常重要,应该刻意去养成这种习惯。