tomcat 日志打印以及Log文件创建

最近我公司的数据流量过大,导致数据库爆掉!

  所以,数据库压力增大!

 一般来说!

  数据库压力增大,可以通过建立中间表,或者log表,通过一个job执行!一步步查!

 又或者分离表,见一个很大的表分成很多小表!查询的时候,要更加明确!也可以通过多表查询得到结果!

  还有一种就是直接得到日志!

  我用的是直接用tomcat创建一个Log日志文件!

 首先在config.properties中配置下

epg.video.logfile.dir =E:/job/log

 然后在spring配置中配置下!也就是启动和退出的时候才启动日志!

<bean id="runtimeService" class="com.viewtoo.epg.service.RuntimeService" init-method="init"
            destroy-method="destroy">
          <property name="manager">
              <ref local="manager"/>
          </property>
        <property name="epgVideoDrLogFileDir" value="${epg.video.logfile.dir}"/>
    </bean>

 然后在com.viewtoo.epg.service.RuntimeService类里面配置一个set方法!这个我就不贴代码了!

下面是我的java代码

/**
     * 定义log的输出格式,已经存储区域的命名
     * @param pathName
     * @return Log
     */
    private Logger _getLogger(String pathName) {
        Logger logs = (Logger)logHandlerMap.get(pathName);
        try {
            if (logs == null) {
                logs = Logger.getLogger("com.viewtoo.epg.logservice." + pathName);
                Layout layout = new PatternLayout("%d{yyyy-MM-dd HH:mm:ss}%m%n");    //输出格式
           String filePath = this.epgVideoDrLogFileDir  + pathName + "_" + DateUtils.formatDate(new Date(), "yyyy-MM-dd") + ".log";
                String datePattern = ".yyyy-MM-dd"; //每天

           DailyRollingFileAppender appender = new DailyRollingFileAppender(layout, filePath, datePattern);
                logs.setLevel(Level.INFO);
                logs.addAppender(appender);

                logHandlerMap.put(pathName,logs);
            }
            return logs;

        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

 logHandlerMap 这个我定义的是全局!因为如果不这么定义,会导致log重复输出!

所以!

 这么定义方便事例和查找!我debug了也找不到问题!网上找了很多资料!但是,大多数,都无法与我想的逻辑匹配!

  所以!这么定义方便!

 

 /**
     * 
     * @param obj
     * @param pathName
     */
    private void _log2File(Object obj, String pathName) {
        Logger logs = this._getLogger(pathName.trim());
        if("EpDr".equals(pathName.trim())){
            EpDr epDr = (EpDr)obj;
            logs.info(epDr.toString());
        }
       
    }

 上面这么写!是为了方便以后拓展!还有就是!我在EpDr 这个entity中自定义了一个toString方法!

还有,就是该,在创建日志文件的时候,要记得!输出的顺序,要跟数据库的一样!

  因为,这样方便查询!而且,也方便以后再DB端操作!

猜你喜欢

转载自shendixiong.iteye.com/blog/1156006
今日推荐