2011-03-24 5 views
2

을 만든 후 나는 새 이벤트 소스를 만듭니다 몇 가지 코드가 있습니다. 일부 기본 EventLog 속성을 설정하고 싶습니다. 나는 라인을 따라 뭔가를 생각하고있다.설정 이벤트 로그 속성은 이벤트 소스

EventLog log = new EventLog(); 
log.Source = Source; 
log.MaximumKilobytes = 16384; 
log.ModifyOverflowPolicy(OverflowAction.OverwriteAsNeeded, 0); 

동시에이 작업을 수행하는 창의적인 방법이 있습니까?

주기적으로 EventLog.Exists (...)를 검사하여 사실을 반환 할 것이라고 가정하지만 깨끗한 방법이 있어야합니다.

+0

이 문제에 대해 알아보고 싶습니다. – Mariusz

답변

4

이 게시물은 오래되었지만 Google로 검색하여 여기에 왔는데 이것이 유용 할 수 있다고 생각했습니다.

경우에 당신은, 당신이 ModifyOverflowPolicy에 적용되는 설정은 당신이 방금 만든 소스에 대해 실제로 전체 이벤트 로그 및되지 않습니다 (대신 새 이벤트 로그) 이벤트 로그 소스를 만들 수 있습니다. 따라서

이 작업을 수행 할 수 있어야한다 :

가 로그에 쓸 거라면 속성 log.Source 만 사용
string LogName = "Application"; 
EventLog.CreateEventSource(Source, LogName); 

EventLog log = new EventLog(LogName); 
log.MaximumKilobytes = 16384; 
log.ModifyOverflowPolicy(OverflowAction.OverwriteAsNeeded, 0); 

: 그렇지 http://msdn.microsoft.com/en-us/library/system.diagnostics.eventlog.source.aspx

, 당신은 정보 로그를 기록 할 수 있습니다 (예 : 이벤트 로그 생성) 로그 작성을 강제 실행하십시오.

로그는 첫 번째 항목이 기록 될 때까지 작성되지 않습니다. http://msdn.microsoft.com/en-us/library/2awhba7a.aspx

+0

흥미 롭습니다. 그래서 내가보고있는 레이턴시는 아직 아무 것도 기록하지 않았기 때문입니다 ... –

1

그냥이 시도하고 지금까지 내가 말할 수있는 ModifyOverflowPolicy() 호출은 단지 최대 파일 크기를 설정하는 데 필요하지 않습니다. 또한 통화가 더 낮은 값을 허용하더라도 최소 크기는 1MB 인 것으로 보입니다. 허용 된 값은 레지스트리에 저장되지만 (바이트 단위) GUI 및 테스트 결과 1028kB가 최소값임을 나타냅니다. 유의할 점은 GetEventLogs() 호출이 실제 1MB 제한이 아니라 레지스트리에서 파생 된 크기를 반환한다는 것입니다.

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

는 윈도우 7 64 비트 및 2008 R2 64 비트에서 테스트. 실제 파일 크기는 설정 한 것보다 4KB 큰 것으로 나타났습니다. GUI에서는 최소 크기 인 1028 kByte에서 볼 수 있지만 더 큰 모든 값은 64의 배수입니다.

관련 문제