Package com.google.code.lightssh.project.log.aop

Source Code of com.google.code.lightssh.project.log.aop.SystemLogAspect

package com.google.code.lightssh.project.log.aop;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.aspectj.lang.JoinPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.code.lightssh.common.model.Loggable;
import com.google.code.lightssh.common.web.SessionKey;
import com.google.code.lightssh.project.log.entity.Access;
import com.google.code.lightssh.project.log.service.AccessManager;
import com.google.code.lightssh.project.security.entity.LoginAccount;

/**
* 系统日志切面
* @author YangXiaojin
*
*/
public class SystemLogAspect {
 
  private static Logger log = LoggerFactory.getLogger( "SYSTEM_LOG" );
 
  @Resource(name="accessManager")
  private AccessManager accessManager;
 
  /**
   * 初始化日志
   * 如果无法获取到Rquest及Session不作日志记录
   */
  protected Access initLog(){
    Access access = null;
    HttpServletRequest request = ServletActionContext.getRequest();
    if( request != null ){
      LoginAccount user = (LoginAccount)request.getSession()
      .getAttribute( SessionKey.LOGIN_ACCOUNT );
      access = new Access( );
      access.init(request);
      access.setOperator( user.getLoginName() );
    }
   
    return access;
  }
 
  /**
   * 初始化日志
   * 如果无法获取到Rquest及Session不作日志记录
   */
  protected Access initLog(Loggable loggable){
    Access access = initLog();
    if( access != null )
      access.setDescription(loggable.logMessage());
   
    return access;
  }
 
  /**
   * 方法执行完成
   */
  public void doAfter(JoinPoint jp) { 
    if( jp.getArgs() == null || jp.getArgs().length == 0
        || !(jp.getArgs()[0] instanceof Loggable) )
      return;
   
    try{
      Access access = initLog((Loggable)jp.getArgs()[0]);
      if( access == null )
        return;
     
      accessManager.writeSystemLog(access);//系统日志
     
      log.info("log Ending method: " 
                  + jp.getTarget().getClass().getName() + "." 
                  + jp.getSignature().getName())
    }catch( Exception e ){
     
    }
       
    }

}
TOP

Related Classes of com.google.code.lightssh.project.log.aop.SystemLogAspect

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.