首先说下我目前系统日志物理结构:id、用户名、中文名、ip地址、时间、动作、涉及。如果定义一个日志切面,只能记录什么时间执行了哪个类的那个方法,这样并不能记录什么时间进行了什么业务操作,我想每次进行业务操作时记录日志,这样代码会出现大量的日志代码,领导让搞个通用的办法,大家有没有好的办法,请指教。 

解决方案 »

  1.   

    需要说明一下,日志这种东西绝不可能做到一劳永逸、通用组件化的!日志是与代码和业务逻辑密切相关的,以目前的 Java 技术只能将日志嵌入到代码之中。很多介绍 AOP 的地方都采用日志来作为介绍,实际上日志要采用切面的话是极其不科学的,希望以后写文章、写书的人介绍 AOP 不要把日志作为示例来介绍了,避免对开发者进行误导。对于日志来说,只是在方法开始、结束、异常时输出一些什么,那是绝对不够的,这样的日志对于日志分析没有任何意义,如果应用出现问题要查找由什么原因造成的,也没有什么作用。这样的日志还不如不用!对于 Java 开发人员来说,我感觉其对日志的思维很浅,能正确在代码中应用日志的开发人员不会超过 50%。对于 Java Web 开发人员来说这个百分比可以低到吓人的程度,绝大多数的 Java Web 开发人员根本就没有写日志的习惯。日志最常用的级别在 log4j 中有 DEBUG、INFO、WARN、ERROR 四种,在 JDK log 中最常用的有 FINE、INFO、WARNING、SEVERE。什么时候应用什么级别的日志是很有讲究的。我曾看到有人的代码中的日志级别全部都是一样的 DEBUG 或者是 INFO,而且清一色地在 catch 块中都是 ERROR。一个好的日志,能在出现错误之后,能快速地进行错误定位,以及分析是由什么原因造成的,进而修改 BUG 避免在今后的代码是出现类似的错误。日志在应用程序中的地位是很重要的,希望大家都能正视!
      

  2.   

    在我写程序过程中我们可以一般采用的是log4j记录日志,这样我们能够很好的定位错误的位置,也可以自己重写日志类记录日志。
      

  3.   

    AOP的话至少可以分离log和business logic,从这个角度来说就是你老板所要的。