##=================日志使用设置====================

------------------【日志使用初始化】--------------------
a，拷贝 log4j.properties bapLogConfigParams.properties 两个文件到resources源码包下。
b，在 bapLogConfigParams.properties 中对日志参数进行初始化设置。
	【loginNameKey】
		存放在session中的用户登录帐号的key 默认为 bap.core.constants.abstractclasses.AbstractScopeConstants.LOGIN_NAME
	【isDataBase=false|true】
		【必设项，不能为空】日志信息是否存放数据库
	【isFile=false|true】
		【必设项，不能为空】日志信息是否存放文件
	【recordReadLog=false|true】
		【必设项，不能为空】是否进行查询日志的记录，主要是查询SQL语句信息

------------------【日志信息扩展】----------------------
a，拷贝 LogExtender.java 到src源码包下，按照该类的注释进行日志信息的扩展
b，创建一个LogPersisterListener的实现类，并注入到spring容器中。 如下代码所示：

@Component
public class MyLogPersisteListener implements LogPersisterListener {

	@Override
	public void onPretPersiste(LogRecord logRecord) {
		LogExtender logExtender = logRecord.getLogExtender();
		
		//对logExtender对象的自定义操作...
		
		logRecord.setLogExtender(logExtender);
	}
}


------------------【登录登出日志】------------------------
a，在web.xml中增加如下配置项：
	
<listener>
	<!-- 用户登出日志的记录 -->
	<listener-class>bap.core.listener.httpsession.SignOutListener</listener-class>
</listener>

b，创建一个SignInAndOut的实现类，并注入到spring容器中。如下面的代码。

@Component
public class SignInAndOutImpl implements SignInAndOut {

	//登录方法
	@Override
	public boolean signIn(Object... objs) {
		//登录逻辑代码...
		if(成功)
		{
			return true;
		}else
		{
			return false;
		}
	}

	//登出方法
	@Override
	public boolean signOut(Object... objs) {
		//登出逻辑代码...
		if(成功)
			return true;
		else
			return false
	}

}

b，在登录登出controller方法中调用相应的方法。

----------------【数据操作日志（增，删，改）】------------------------
a，让需要进行数据操作日志记录的实体类实现Recordable接口，并在isDetailRecord方法中返回是否进行详细更新日志记录的信息。

public class User extends IdEntity implements Recordable{

	//业务字段代码...

	@Override
	public boolean isDetailRecord() {
		return true;
	}
}

----------------【功能模块访问日志】----------------------
a，在Controller类中相应功能模块的方法上标注@FunctionDefining接口，并设置功能描述说明或者功能代号。建议功能描述或者代码采用创建枚举或者常量类的方式来设置。
如下代码所示：

/**
 * <b>功能描述:</b> 查询
 */
@FunctionDefining("查询记录")
@RequestMapping("r")
public void read() {
	//功能模块逻辑代码...
}

----------------【异常日志】----------------------
a, 在catch语句块中使用LoggerBox.EXCEPTION_LOGGER的record方法来进行异常记录。如下代码所示：

try {
	//业务逻辑代码...
} catch (Exception e) {
	LoggerBox.EXCEPTION_LOGGER.record("自定义异常信息", e);
}

----------------【日志类型代码】----------------------
0 == 新增；
1 == 查询；
2 == 修改；
3 == 删除；
4 == 登入；
5 == 登出；
6 == 访问；
