![](/img/trans.png)
[英]Error while writing to event log, prevents windows service from starting?
[英]check for event log file full while sending email from windows service
我正在從Windows服務發送電子郵件。 當我將事件條目寫入事件查看器時,它有時會拋出“事件日志文件已滿”的錯誤。
如何檢查它是否已滿?
謝謝
您使用EventLog類的OverflowAction屬性
更多信息: http : //msdn.microsoft.com/en-us/library/system.diagnostics.eventlog.overflowaction.aspx
事件日志大小基於存儲大小而不是條目數,因此很難確定事件日志是否已滿。 例如,
bool logFull = false;
EventLog e = ... // get the needed event log
var sizeKB = e.MaximumKilobytes; // event log size
// Check current event log size
var regEntry = Rgistry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Services\\EventLog\\" + e.Log);
if (regEntry != null)
{
var filePath = regEntry.GetValue("File");
if (filePath != null)
{
var file = new FileInfo(filePath.ToString());
if (file.Exists)
{
var fileSize = (file.Length + 1023) / 1024;
logFull = (fileSize >= sizeKB); // a 1K margin
}
}
}
所以上面的代碼使用1KB邊距來決定日志文件是否已滿。 因此,我建議您始終將事件條目包裝在異常塊中包裝,以避免當前日志超出事件日志大小的罕見情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.