当前位置: 代码迷 >> J2EE >> struts2拦截器,小弟我需要用log4j实现登陆日志和更新日志,小弟我需要配置两个log4文件么
  详细解决方案

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

热度:90   发布时间:2016-04-21 22:16:59.0
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 HibernateExceptionSQLException {
                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
------解决方案--------------------
  相关解决方案