最近主要负责开发的CDMS文档管理系统,其中涉及到SQL参数的填充,自己定义了一个新的SQLLayout(),如 appender.setLayout(new SQLLayout()); 然后再把其参数追加到里面去,如logger.addAppender(appender)。实例化一个SessionUtils工具类和一个SessionFilter过滤类,让SessionUtils工具类去获取当前的User线程跟请求信息两条线程,并让SessionFilter过滤类将其统统绑定,再通过doFilter去调用servlet获取相应的信息。最后在LoggerUtil日志工具类中,将参数一一填充,涉及到自定义的就自己去实现它,如果是系统自带的可以交给系统去处理,其中时间格式要自己格式化一下,我又自己new了一个DataUtils时间工具类,时间格式问题统统交给它来处理。
心得:日志既可以写入到文件也可以写入到数据库,关键是看开发的需求的定义,用好log4j可以让事情事半功倍。
sql = sql.replace("%X{userId}", userId);
sql = sql.replace("%X{userIp}", accessIp);
sql = sql.replace("%X{userAD}", accessDomain);
sql = sql.replace("%X{userBIOS}", accessBIOS);
sql = sql.replace("%d{yyyy-MM-dd HH:mm:ss}", sdf.format(new Date(event.timeStamp)));
sql = sql.replace("%X{operationType}", operationType);
sql = sql.replace("%m", event.getMessage().toString());
sql = sql.replace("%p", event.getLevel().toString());