pretty code

2019年3月19日 星期二

mongodump stderr message

最近在使用程式定時備份 MongoDB,發現在備份之後的 code 都無法執行。

查了一下才發現,mongodump 的 message 是往 stderr 丟,故程式不能以 stderr 是否有字串來判斷成功與否。

應該要對 stderr 再做一次過濾,如果有 "Failed" or "error ",理論上就是 dump 過程中有錯誤。

不過因為我不知道所有的錯誤訊息內容,以上方式只是針對 MongoDB service 沒有啟動的 case。

另外,為了自動排程執行,有些人可能是用 Windows batch 再包一層。

如果要在 batch 中將訊息直接導向到  log,正確做法應該如下。

run.bat > back.log 2>&1

">" 前面沒有寫就表示 default (STDOUT=1)。
"2>&1" 將 STDERR(2) 導向到 STDOUT(1)。

沒有留言: