- - PR -
VBからイベントログの取得
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-09-16 14:11
VB.NET2003にてイベントログを取得しているのですが質問があります
他のマシンのイベントログを以下のように取得しているのですが 当日のログしか取得ができません、日付けの範囲を指定して取得する方法があれば 教えていただけますでしょうか Dim logs() As System.Diagnostics.EventLog Dim log As System.Diagnostics.EventLog logs = System.Diagnostics.EventLog.GetEventLogs("SERVER_NAME") For Each log In logs If log.LogDisplayName = "システム" Then Dim entry As System.Diagnostics.EventLogEntry For Each entry In log.Entries Next End If Next |
|
投稿日時: 2005-09-16 14:34
自己レスです
おもいっきり勘違いしてました、当日のログしか取れないのは イベントログには当日分しか入っていないためでした...大変失礼いたしました。 |
|
投稿日時: 2005-09-20 10:20
イベントログに関して再度質問があります
一旦ファイルに保存されたイベントログの読み込みに関してです イベントログは(.evt)形式でバイナリ保存されています このイベントログを読み込んで条件処理(このイベントIDなら何々する)を行いたいのですが バイナリーファイルの読み込みに関して知識が無いのでご存知の方ご教授願います |
|
投稿日時: 2005-09-20 11:48
バイナリーファイルを直接読み込むには、データフォーマットが分からなければ、どうしようもないです。
間接的に読み込む方法を探してみると、Win32APIのOpenBackupEventLog関数があります。 .NET Frameworkライブラリに同じものがあればいいのだが... いまのところ見つからないです。 |
|
投稿日時: 2005-09-20 12:00
イベントログ(今はシステムログですが)のフォーマットですが
管理ツール→イベントビューアからテキストファイルに出力したものがフォーマットと考えているのですが違ってますでしょうか? だとすると ・日付 ・時間 ・ソース ・種類 ・分類 ・イベントID ・ユーザー ・コンピュータ ・説明 これらだと思っています これで合っているとした場合バイナリーでの読み込み方法がわかればご教授願います |
|
投稿日時: 2005-09-20 12:58
IIS用のリソースキットにイベントファイルにSQLでアクセスするためのインターフェイスがはいっているそうで、入っているコンポーネントとして、以下の3つが該当するようです。
IIS 6.0 Resource Kit Tools http://www.microsoft.com/downloads/details.aspx?FamilyID=56fc92ee-a71a-4c73-b628-ade629c89499&DisplayLang=en IIS 6.0 Resource Kit http://www.microsoft.com/downloads/details.aspx?FamilyID=80a1b6e6-829e-49b7-8c02-333d9c148e69&DisplayLang=en IIS 6.0 Command Line Tools http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/iis/command__line_tools_included_in_iis.asp これらの3つのコンポーネントはすでに私のマシンにはインストールしてたので この3つのうちどれに入っているかを確認することはできませんのでご了承のほど。 でも、名前からして2番目の「IIS 6.0 Resource Kit」をインストールすれば、 多分入っていると思われますので、まずこいつをインストールしてみてください。 インストールすると参照設定の「COM」タブに 「ms utility 1.0 type library - logparser interfaces collection」 というライブラリが追加されていると思いますので、これを参照設定に追加します。 そしたら、以下のサンプルプログラム(関数)をコピペして実行してみてください。 Public Sub GetLog(ByVal evtFileName As String) Dim strSql As String = "SELECT * FROM " & evtFileName Dim log As MSUtil.ILogQuery = New MSUtil.LogQueryClassClass Try Dim recSet As MSUtil.ILogRecordset = log.Execute(strSql) 'どんなフィールドがあるかはこいつのコメントはずして確認できます 'Dim colCnt As Integer = recSet.getColumnCount 'Dim cnt As Integer 'For cnt = 0 To colCnt - 1 ' Debug.WriteLine(recSet.getColumnName(cnt)) 'Next 'イベントログデータの表示(とりあえず4つのフィールドを表示) While Not recSet.atEnd() Dim rec As MSUtil.ILogRecord = recSet.getRecord() Debug.WriteLine(String.Format("{0} {1} {2} {3}", rec.getValue("EventID"), rec.getValue("EventType"), rec.getValue("EventCategory"), rec.getValue("Message"))) recSet.moveNext() End While Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub GetLog("c:\test.evt") てなかんじで実行します。 一応、フィールド(列)は以下のものがあるようです。 EventLog RecordNumber TimeGenerated TimeWritten EventID EventType EventTypeName EventCategory SourceName Strings ComputerName SID Message [ メッセージ編集済み 編集者: gtk2k 編集日時 2005-09-20 13:04 ] [ メッセージ編集済み 編集者: gtk2k 編集日時 2005-09-20 13:12 ] |
|
投稿日時: 2005-09-20 13:29
gtk2kさんどうもありがとうございました、教えていただいた方法でデータ取得できました。
ちなみにIIS 6.0 Resource KitはWindows Server 2003とWindows XPにしか対応していないようですね 実際にはWindows2000サーバで実行するのですがWindows2000に対応したものも有るのでしょうか? |
|
投稿日時: 2005-09-20 13:58
自己解決です
Log Parser 2.2ならWindows2000に対応していましたのでそれだけダウンロードしてうまくいきました。 どうもありがとうございました Log Parser 2.2 http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&displaylang=en |
1