首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

struts2拦截器,小弟我需要用log4j实现登陆日志和更新日志,小弟我需要配置两个log4文件么

2013-09-28 
struts2拦截器,我需要用log4j实现登陆日志和更新日志,我需要配置两个log4文件么?用struts2的拦截器,实现登

struts2拦截器,我需要用log4j实现登陆日志和更新日志,我需要配置两个log4文件么?
用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就可以了
[解决办法]
用户不同生成不同的日志只有自己写了。
[解决办法]

引用:
Quote: 引用:

配置两个categry就可以了
我想讲hql语句输入到日志文件中,怎么弄呢?觉得log4j应该可以配置,但是没有什么想法。


自己建一个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级别

你可以约定 登录的时候
和更新用不同的级别
[解决办法]
引用:
Quote: 引用:

  ex:  设置 info级别  使用log.info("VPN设备信息数据采集程序开始运行~~~~~~~~~~~~~~~~~~~~");  就可以 在日志中 写入 

上面的问题解决了,多个可以在配置多个输出位置。但是现在我想实现的事,记录操作的sql。。。。纠结了,在拦截器里面写还是在dao层写呢。
拦截器好点,dao会不会每个都要写?
[解决办法]
在拦截器里写,难点在怎么在拦截器里获取HQL
------解决方案--------------------


按照项目规范的开发模式具体的hql都是写在service层的,dao层提供接收hql并调用。struts2作为controller层是不能得到hql语句的,除非项目不规范,那么也就是说所有的hql在dao这层都能接收到,可以利用这一特点用spring的aspect的aop的返回后通知方式在对dao中所有有接收hql参数的方法拦截就行了。在方法执行后记录hql语句到日志
[解决办法]

引用:
Quote: 引用:

按照项目规范的开发模式具体的hql都是写在service层的,dao层提供接收hql并调用。struts2作为controller层是不能得到hql语句的,除非项目不规范,那么也就是说所有的hql在dao这层都能接收到,可以利用这一特点用spring的aspect的aop的返回后通知方式在对dao中所有有接收hql参数的方法拦截就行了。在方法执行后记录hql语句到日志
因参数的形式,传到拦截器中么?dao层怎么得到执行的hql呢?

我已经说了规范的项目hql是不会写在controller层的,service写具体的业务hql传给dao执行。struts2的的拦截器是获取不到hql的,你要用spring的aop对dao有hql方法进行拦截
[解决办法]
我问了一下人,他说要用 AOP写拦截DAO层,不是service层,能取到SQL

热点排行