springboot開發效率不錯。有的時候,部署起來時,也直接把程序代碼從git上拉下來,然後切到目錄下直接用mvn命令啓動它,免得打包的麻煩,無論是打war包還是打jar包,都不適合快速迭代。
假設這時候,我想定時重啓這個springboot,那麼由於它沒有部署在tomcat裏,無法通過定時重啓tomcat的windows服務或者tomcat腳本來實現。
這時可以如下:
目錄
製作一個啓動run.bat
rem ---------- 先殺死 當前 正佔用8080端口的 先前跑起來的 任務
setlocal enabledelayedexpansion
set port=8080
for /f "tokens=1-5" %%a in ('netstat -ano ^| find ":%port%"') do (
if "%%e%" == "" (
set pid=%%d
) else (
set pid=%%e
)
echo !pid!
taskkill /f /pid !pid!
)
rem ---------- 殺進程 結束
rem 一定要切換到目標目錄
cd E:\java\springboot
e:
git pull
mvn spring-boot:run -Dspring-boot.run.profiles=test -Dmaven.test.skip=true -Dspring-boot.run.jvmArguments="-Xms128m -Xmx1024m"
在window的計劃任務裏,調度它
這樣,基本就能實現目的了。
注意:上面“允許 按需運行任務”,這樣可以 手動地 啓動/停止 這個任務,做調試用;同時不影響windows的任務計劃調度它。
查看控制檯日誌:
這裏會帶來一個問題,就是springboot的運行控制檯沒有了。如果springboot有日誌輸出,可以用windows下的tail命令行,來觀察按天輸出的springboot日誌:
set dateStr=%date:~0,4%-%date:~5,2%-%date:~8,2%
echo %dateStr%
tail -f ..\..\applog\%dateStr%\%dateStr%.log
正規做法:把所有日誌輸出到springboot的日誌文件裏
//在類的開頭定義Logger
private final Logger logger = LoggerFactory.getLogger(this.getClass());
//在需要輸出的地方定義------
logger.info("------")。。。。。
logger.debug("------")。。。。。
//把錯誤日誌也輸出到log
} catch (Exception e) {
// TODO Auto-generated catch block
logger.error(e.getMessage());
}