Только что попробовал, и, насколько я могу судить, вызов ModifyOverflowPolicy()
не нужен просто для установки максимального размера файла. Кроме того, минимальный размер составляет 1 МБ, хотя вызов принимает более низкие значения. Любое принятое значение сохраняется в реестре (в байтах), но графический интерфейс и тесты показывают, что минимум 1028 кБ. Стоит отметить, что вызов GetEventLogs()
возвращает размер, полученный из реестра, а не фактический предел в 1 МБ.
if (!System.Diagnostics.EventLog.SourceExists(this.eventSourceName))
{
System.Diagnostics.EventLog.CreateEventSource(this.eventSourceName, this.eventLogName);
if (!string.IsNullOrEmpty(this.eventLogMaxSizeKB))
{
System.Diagnostics.EventLog myEventLog = new System.Diagnostics.EventLog(this.eventLogName);
long RoundedToLowest64k = (long.Parse(this.eventLogMaxSizeKB) / 64) * 64;
myEventLog.MaximumKilobytes = RoundedToLowest64k;
}
}
Протестировано на 64-битной Windows 7 и 64-битной версии 2008 R2.
Я также отметил, что фактический размер файла на 4 КБ больше, чем вы установили. В графическом интерфейсе это видно для минимального размера, 1028 кБайт, но все большие значения кратны 64:)