我有一個PowerShell腳本運行在多臺機器上並行寫入同一個日誌文件,爲此我使用這個簡單的行代碼:$ line >> $ LogFilePowerShell - 幾個進程更新相同的日誌文件
顯然有時文件被鎖在多個進程試圖更新 我想,在情況下,日誌文件被鎖定,該腳本將繼續嘗試更新文件,直到他成功
有沒有辦法做到這一點?
我有一個PowerShell腳本運行在多臺機器上並行寫入同一個日誌文件,爲此我使用這個簡單的行代碼:$ line >> $ LogFilePowerShell - 幾個進程更新相同的日誌文件
顯然有時文件被鎖在多個進程試圖更新 我想,在情況下,日誌文件被鎖定,該腳本將繼續嘗試更新文件,直到他成功
有沒有辦法做到這一點?
一般來說,我不會推薦兩個不同的進程記錄到同一個文件,但這裏是一個辦法,應該有所幫助:
function Log($line, $logFile) {
$success=$false
while (!$success) {
try {
$line >> $logFile
$success = $true
}
catch [io.ioexception] {
# Write-Host "Retrying log to file"
}
}
}
Log $line $LogFile
你可以準備在處理這個問題specialed線程。首先,Tou可以聲明一個隊列,當進程想要寫入文件時,把它放入隊列中,當隊列不空時,讓這個過程寫入文件
你能告訴我們當你文件被鎖定? –