|
分類:[C#]
2018/01/26(Fri) 18:24:22 編集(投稿者) 2018/01/26(Fri) 18:24:19 編集(投稿者)
お世話になります、 勉強していて、解決できないため質問いたします。 当方初心者ですので、足りていない情報などあるかもしれません。
【やりたいこと】 イベントログを取得して、XMLファイルの中身を参照してデータのフィルターしDataGridViewに表示する
管理ツールのイベントビューアーを開いて頂き、 操作>現在のログをフィルター>XMLのタブを押した後、手動でクエリを編集するに【XMLファイル】を入れた結果が求めているものになります。
現在 イベントのログが取れているのみで、XMLのフィルターをどう使っていけばいいかわからない状況です。
【環境】 .net 2.0 C#
【XMLファイル】 <?xml version="1.0" encoding="utf-8" ?> <QueryList> <Query Id="0" Path="Application"> <Select Path="Application">*[System[(Level=1 or Level=4 or Level=0) and (EventID=903) and TimeCreated[timediff(@SystemTime) <= 43200000]]]</Select> </Query> </QueryList>
【イベント取得箇所】 dataGridView1.Columns.Clear(); try { System.Diagnostics.EventLog evLog = new System.Diagnostics.EventLog("Application"); bool checker = new bool(); int iCnt = evLog.Entries.Count;
DataSet ds = new DataSet(); // ds.ReadXml(FILE_PATH); DataTable dt = ds.Tables.Add("Computer"); DataRow dr;
//DateTime値に変換する文字列 string s1 = dateTimePicker1.Text; //文字列をDateTime値に変換する DateTime dt1 = DateTime.Parse(s1); //結果を表示する Console.WriteLine(dt1);
dt.Columns.Add("レベル"); dt.Columns.Add("日付と時刻"); dt.Columns.Add("ソース"); dt.Columns.Add("イベントID"); dt.Columns.Add("タスクのカテゴリ"); dt.Columns.Add("メッセージ"); dt.Columns.Add("PC名"); dt.Columns.Add("ユーザー");
for (int i = iCnt - 1; i >= 0; i--) { if (evLog.Entries[i].TimeWritten <= dt1) { break; } else { if (checker == true) { dr = dt.NewRow(); GritValues(dr, dt, evLog, i); dt.Rows.Add(dr); } else { continue; } } dataGridView1.DataSource = ds; dataGridView1.DataMember = "Computer";
} //datagridの列などの調整 Gridview();
} catch { return; }
以上です、よろしくお願いします。
|