有很多解釋如何清空日誌文件。清除C#中鎖定的日誌文件的內容
像:
File.WriteAllText(activeTab.FileName, string.Empty);
但是這個例子和其他的例子,我發現所有有同樣的問題。如果日誌文件當前被另一個進程鎖定,則它不起作用。
在ruby中有一個任務我可以使用不刪除,只是清空日誌文件。
我發現我也可以用Powershell使用clc <filename>
。 來源可現在這裏:
但老實說,我不明白這個代碼是如何工作的,也從其他類繼承。
是否有可用於任何常用程序/類的C#實現?
總之,如果一個文件被鎖定你(*您=任何其他進程/線程*)不能刪除或修改(「空」)它。有很多第三方日誌庫,我會推薦任何一天試圖推出自己的。然後使用一個庫將確保你不必擔心這樣的事情,因爲這些庫中的一些已經存在了,只要我記得,並且非常強大和可配置。我個人最喜歡的是[Log4Net](https://logging.apache.org/log4net/),但[NLog](http://nlog-project.org/)也很受歡迎。 – Igor
IMO,這不是一個合理/安全的事情。你應該弄清楚如何讓任何人拿着文件鎖釋放它。 – jlew
您不能破壞另一個進程的文件鎖定。你所能做的就是將數據排隊到某個地方,並且繼續檢查要釋放的鎖,然後完成你的動作(編輯/刪除/清除)。 –