проверить, заполнен ли файл журнала событий при отправке электронной почты из службы Windows - PullRequest
0 голосов
/ 14 марта 2011

Я отправляю письмо из службы Windows. Иногда выдает ошибку «файл журнала событий переполнен», когда я записываю запись о событии в программу просмотра событий.

Как проверить, заполнен он или нет?

спасибо

Ответы [ 2 ]

1 голос
/ 14 марта 2011

Размер журнала событий основан на размере хранилища, а не на количестве записей, поэтому было бы немного трудно определить, заполнен ли журнал событий или нет. Например,

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
      }
   }
}

Таким образом, приведенный выше код использует запас в 1 КБ, чтобы решить, заполнен ли файл журнала или нет. Поэтому я хотел бы предложить вам всегда оборачивать свой код записи записи события в блок исключения, чтобы избежать редкого сценария, когда текущий журнал может привести вас к превышению размера журнала событий.

1 голос
/ 14 марта 2011

Вы используете свойство OverflowAction класса EventLog

Дополнительная информация: http://msdn.microsoft.com/en-us/library/system.diagnostics.eventlog.overflowaction.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...