用struts2的拦截器,实现登录日志和更新日志,我用写两个log4j文件还是一个就可以搞定了,刚用log4j,了解的不多。那么多个action怎么配置到一个文件里面,解决多个action判断是否写日志的问题。
struts2 log4j 拦截器
------解决方案--------------------
log4j等级 debug debug级别
info info级别
warn warn级别
error error级别
不能用来记录你的什么登录和更新的,,,
action 是配置在struts2.xml中 可以使用 * 通配符 可以解决多个的问题
------解决方案--------------------
ex: 设置 info级别 使用log.info("VPN设备信息数据采集程序开始运行~~~~~~~~~~~~~~~~~~~~"); 就可以 在日志中 写入
------解决方案--------------------
怎么根据用户的不同用log4j生成不同的日志呢?
------解决方案--------------------
配置两个categry就可以了
------解决方案--------------------
用户不同生成不同的日志只有自己写了。
------解决方案--------------------
自己建一个hibernate的数据访问工具类, 所有的hibernate请求都通过你们这个工具类
不但可以打印hql,还可以计算hql执行时间。
Object execute(HibernateCallback callback, String logMessage) {
TimeWatch watch = new TimeWatch();
try {
return hibernateTemplate.execute(callback);
} finally {
logger.log(HibernateDao.class, String.format("%s, exeTime=%d", logMessage, watch.exeTime()));
}
}
@SuppressWarnings("unchecked")
public <T> List<T> find(final DetachedCriteria detachedCriteria, final Integer firstRst, final Integer maxRsts) {
return (List<T>) execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Criteria criteria = detachedCriteria.getExecutableCriteria(session);
if (firstRst != null) criteria.setFirstRst(firstRst);
if (maxRsts != null) criteria.setMaxRsts(maxRsts);
return criteria.list();
}
}, String.format("find list by criteria, criteria=%s, firstRst=%d, maxRsts=%d", detachedCriteria, firstRst, maxRsts));
}
------解决方案--------------------
你是通过什么访问数据库的
------解决方案--------------------
log4j等级 debug debug级别
info info级别
warn warn级别
error error级别
你可以约定 登录的时候
和更新用不同的级别
------解决方案--------------------
ex: 设置 info级别 使用log.info("VPN设备信息数据采集程序开始运行~~~~~~~~~~~~~~~~~~~~"); 就可以 在日志中 写入
上面的问题解决了,多个可以在配置多个输出位置。但是现在我想实现的事,记录操作的sql。。。。纠结了,在拦截器里面写还是在dao层写呢。
------解决方案--------------------
在拦截器里写,难点在怎么在拦截器里获取HQL
------解决方案--------------------