你的位置:首页 > Java教程

[Java教程]工作中面临日志问题以及自己现有日志的备份


    问题的产生,必有其理由。说白点也就是客户需要,没办法的事。不过也到给我们添了不少麻烦。本人也希望大牛们能给在下提提更多的思路,在下在此谢过。

    具体是这样:

     1.要记录操作人员,操作时间,操作相应模块

         2.要记录操作的原始数据(ps:列级别)和变更后数据

    面临问题:

         1.各个方法相对独立,没有公共接口

         2.形参顺序不一,类型不一以及方法名称不一

 针对以上,要是解决其实也很简单,主要不怕麻烦。写个接口,每个模块去调用,这种简单而且有效的方法。不过模块太多而且繁琐这要累死个人。

   目前就我自己发现以及朋友提醒再加上资料等信息,大致将其分为2类,共四种方法:

   第一类(每个相关业务中需要手工添加执行功能部分):

        1.写日志操作类,在相关模块中添加此接口调用。这种方法比较简单,如果一开始就有这部分代码,那就更好解决了。此种方法自不必多说,跟正常接口一样。

        2.利用消息中间件,2和1实现类似,也需要每次都调用jms,不过论性能2比1好点

        3.利用log4j日志记录,相关请看:http://blog.csdn.net/ziruobing/article/details/3919501,logback也有相关

    第二类(使用Aop,拦截器等):

   1.Aop,该实现思路@BussAnnotation注解可以标示相关业务信息(ps:新增,删除,修改等操作,以及所属模块等信息,aop中形参ProceedingJoinPoint可以获取参数对象

      @Component("userManager")

 

   public class UserManagerApplogicImpl implements UserManagerApplogic {
    @BussAnnotation(moduleName="人员管理",option="添加用户")
    public void addUser(String name) {
      System.out.println("add a User!Name is "+name);
    }
   }

 

  @Aspect
  @Component
  public class LogInterceptor {
    @Pointcut("execution(public * com.mlliud..*.addUser(..))")
    public void aApplogic() {}
    @Around(value = "aApplogic() && @annotation(annotation) &&args(object,..) ", argNames = "annotation,object")
    public Object interceptorApplogic(ProceedingJoinPoint pj,BussAnnotation annotation, Object object) throws Throwable {
      System.out.println("moduleName:"+annotation.moduleName());
      System.out.println("option:"+annotation.option());
      pj.proceed();
      return object;
    }
  } 

      2.拦截器,这个简单日志还好,其他目测算了吧。个人愚笨只有想到根据访问链接记录一些日志。

      看来以上问题,针对我们项目做分析。得出一下结论:

           1.第一类在项目初期考虑或者有相关需求还好,涉及每个模块相关代码都要改,可以手工加入。要是项目结构复杂或者代码量较多,我觉得很坑.....

           2.第二类aop中@BussAnnotation注解虽然可以标示些关键信息,但是我们毕竟要把整个vo的相关变更信息记录。由于当时参数没有特殊规范,以及类型没有规划,造成ProceedingJoinPoint获取参数没有规律可寻,例如:addUser(User u,int a),updateUser(User u,String x) 这种我获取第一个参数,往数据库中存就可以。其他你懂的....

           3.拦截器....

     写此篇文章希望各位大神能给咱提下想法,寻找更好方法....

        也希望在此宣传下群:189770377  希望各位大神能够入住,多多提出好的想法。也希望学弟学妹们,能够在此得到好的方向.