簡體   English   中英

從Windows服務發送電子郵件時檢查事件日志文件是否已滿

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM