2016-09-12 9 views
-1

私はWindowsサービスを持っています。私はEventLogを正しく動作させるのに苦労しています。私はWindowsサービスのコンストラクタでカスタムEventLogはどこに作成する必要がありますか?

:私はサービスを実行

public MyService() 
    { 
     InitializeComponent(); 

     AutoLog = false; 
     if (!EventLog.SourceExists(ServiceName)) 
     { 
      EventSourceCreationData creationData = new EventSourceCreationData(ServiceName, ServiceName); 
      EventLog.CreateEventSource(creationData); 
     } 
    } 

した後、私は例外を取得していないが、私はイベントビューアアプリケーションとサービスログの下に何を見ることができません! (コンピュータのリセット後も)。

は、私は私のレジストリをチェックし、私のサービスは、サービス\ MyServiceで

ないここ

\

HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSETに表示されます:サービス\ CURRENTCONTROLSET \

HKEY_LOCAL_MACHINE \ SYSTEM \ eventlog \ MyService

Visual Studioの開発者コマンドプロンプト(VS2015)を介してWindowsサービスをインストールします。

なぜですか?なぜイベントログにはないのですか?なぜ私はイベントビューアでそれを見ることができませんか?

ありがとうございます!

+0

'ServiceName'変数の値は何ですか? – Vijai

+0

@Vijai "MyService"は重要ですか? –

答えて

-1

次のコードを使用して、作成前にソースが存在することを確認してください。ここでの命名規則を確認してください:https://msdn.microsoft.com/en-us/library/2awhba7a.aspx

string machineName = "MyRemoteServerName"; 
string source = "MyCustomApp"; 
string logName = "Application";//can be Application, System, or a custom log name. 

if (EventLog.SourceExists(logName, machineName)) 
    return; 

EventSourceCreationData eventSourceCreationData = new EventSourceCreationData(source, logName); 

eventSourceCreationData.MachineName = machineName; 

EventLog.CreateEventSource(eventSourceCreationData); 

参照してください:https://msdn.microsoft.com/en-us/library/system.diagnostics.eventsourcecreationdata(v=vs.110).aspx

+1

はmachineNameが必要ですか?それだけでなく、自分のコードをコピー&ペーストします。どうしてそうするか? –

関連する問題