读书人

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

发布时间: 2012-06-30 17:20:12 作者: rapoo

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

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

? 所以,数据库压力增大!

?一般来说!

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

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

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

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

?

?首先在config.properties中配置下

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

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

<bean id="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端操作!

读书人网 >软件开发

热点推荐