一直对devMode的配置项不甚了解,默认把开发环境配置成true,生产环境配置成false。
然后在开发过程中遇到了几个槛,举个栗子:
1.使用freemarker,devMode=fasle的情况下,freemarker有缓存,生产环境改html代码都不会生效,得重启才行,最早刚接触jfinal和freemarker写项目的时候,我还以为是我把生产环境折腾坏了,各种解决不了(心好方).. 后来在DreamLu的指导下,添加了这行代码解决。
me.setFreeMarkerTemplateUpdateDelay(0);
2. JFinal action report 开发阶段最常见的控制台输出了。
最近在跟app客户端联调接口,客户端丢了一串json问我出了什么问题。
like this:
屁颠屁颠连上生产环境打开linux日志一看,当时就懵逼了!说好的JFinal action report 呢?
这怎么定位... 然后就开始找为什么没输出..是不是logback哪里配置错了。然而怎么看都没发现有问题。 就开始从git上翻历史代码,一段段时间下载下来,打包丢服务器上看看有木有输出JFinal action report,
最终定位了2个历史版本,然后一行行去比对... 最终发现是devMode改成了false..
修改回true后,感觉好多了-,-
最近遇到的2个折腾的比较久的问题,
我对项目中能预期到的异常都进行了处理,分配了异常代码,所以就没有输出错误堆栈。这种使用下,JFinal action report就非常有用了,我觉得其他日志都能省,这个真不能省,对于出问题的定位非常有帮助。
int DEFAULT_FREEMARKER_TEMPLATE_UPDATE_DELAY = 3600; // For not devMode only
由于在开发的时候希望当时就看到页面改变的结果,所以 devMode 为 true 的时候这个值为 0,而生产环境,如果 freemarker 不加这个缓存,客户端每次请求都要对页面进行解析、建立 AST 等动作,非常耗时,所以 jfinal 为生产环境 devMode 为 false 时给定了一个默认的缓存时间