2012-01-05 68 views
0

我創建了一個Windows服務。安裝服務後,我開始服務。但我沒有得到我的服務的事件日誌。如何在事件查看器中獲取服務

我用下面的代碼。

public partial class Service1 : ServiceBase 
{ 
    public Service1() 
    { 
     InitializeComponent(); 
     this.ServiceName = ConfigurationManager.AppSettings.Get("ServiceName"); 
     string sourceName = ConfigurationManager.AppSettings["Source"]; 
     string logName = ConfigurationManager.AppSettings["Log"]; 
     if (!System.Diagnostics.EventLog.SourceExists(sourceName)) 
      System.Diagnostics.EventLog.CreateEventSource(sourceName, logName); 
     eventLog.Source = sourceName; 
     eventLog.Log = logName; 

    } 

    protected override void OnStart(string[] args) 
    { 
     eventLog.WriteEntry("Service Starting..."); 
    } 

    protected override void OnStop() 
    { 
     eventLog.WriteEntry("Service Stopped..."); 
    } 
} 

我檢查了事件viewwe,我沒有得到我的服務名稱。

如何得到它。

感謝, 普加

回答

0

這種情況最可能的原因是該服務的用戶沒有足夠的權限才能創建事件源。

您需要將try/catch處理程序添加到構造函數中,以確定是否如此。

您也可以嘗試以本地管理員用戶身份運行服務,這應該會導致創建事件源。

由於這個原因,我們總是在安裝過程中創建我們的事件源,並要求管理員用戶運行安裝。

另一種選擇,這是我們使用的是正常降級到在事件中使用的應用程序事件日誌我們遇到一個安全異常創造我們的事件源:

try { 
     if (!System.Diagnostics.EventLog.SourceExists(sourceName)) 
      System.Diagnostics.EventLog.CreateEventSource(sourceName, logName); 
    } catch (SecurityException e) { 
     sourceName = "Application"; 
    } 
    eventLog.Source = sourceName; 
+0

感謝您的答覆。如何檢查我是否擁有管理權限,如何獲得這種權威性。 – Pooja 2012-01-05 04:07:20

+0

看看這個MSDN文檔。答案因您的操作系統而異:http://msdn.microsoft.com/en-us/library/2awhba7a.aspx – 2012-01-05 04:27:12

相關問題