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端操作!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值