/**
   * apo:around环绕方式记录日志
   *
   * @param jp
   * @return
   * @throws Throwable
   */
  public Object saveLoginAndLogic(ProceedingJoinPoint jp) throws Throwable {

    LogMethod logMethod = LogMethodText(jp);

    Object ret = null;
    try {
      if (logMethod != null
          && (logMethod.loglevel().equals(LOGLEVEL.ALL)
              || logMethod.loglevel().equals(LOGLEVEL.OPERATION))
          && (logMethod.logpos().equals(LOGPOS.BEFORE) || logMethod.logpos().equals(LOGPOS.ALL))) {
        doLog(logMethod, jp);
      }

      ret = jp.proceed();

      if (logMethod != null
          && (logMethod.loglevel().equals(LOGLEVEL.ALL)
              || logMethod.loglevel().equals(LOGLEVEL.OPERATION))
          && (logMethod.logpos().equals(LOGPOS.AFTER) || logMethod.logpos().equals(LOGPOS.ALL))) {
        doLog(logMethod, jp);
      }
    } catch (Throwable e) {
      e.printStackTrace();
      throw e;
    }
    return ret;
  }
 /**
  * 发生异常的时候,记录异常日志【记录范围:已经注册过的动作中的BusinessException】
  *
  * @param jp
  * @param ex
  * @throws Exception
  * @author 朱启亮
  * @date 2008-1-24
  */
 public void saveException(JoinPoint jp, Exception ex) throws Exception {
   if (ex instanceof BusinessException) {
     LogMethod logMethod = LogMethodText(jp);
     if (logMethod != null
         && (logMethod.loglevel().equals(LOGLEVEL.ALL)
             || logMethod.loglevel().equals(LOGLEVEL.EXCEPTION))) {
       String logText = logMethod.name();
       String exceptionStr = exceptionToString(ex);
       String classStr = jp.getTarget().getClass().getName();
       String methodStr = classStr + "." + jp.getSignature().getName();
       logText += "时发生异常(" + methodStr + ")  具体信息:" + exceptionStr;
       saveLog(jp, logText, classStr, ex);
     }
   }
 }
  /**
   * 创建并保存日志对象
   *
   * @param logMethod
   * @param jp
   */
  private void doLog(LogMethod logMethod, ProceedingJoinPoint jp) {
    String logText = logMethod.name();
    String classStr = jp.getTarget().getClass().getName();

    Object obj = jp.getThis();
    if (obj instanceof AbstractAction) {
      AbstractAction action = (AbstractAction) obj;
      HttpServletRequest request = action.getRequest();
      logText += "\r\n请求:" + request.getRequestURI() + "\r\n";
      Enumeration params = request.getParameterNames();
      while (params.hasMoreElements()) {
        String param = (String) params.nextElement();
        String value = request.getParameter(param);
        logText += ("参数->" + param + ":" + value + "\r\n");
      }
    }
    saveLog(jp, logText, classStr);
  }