「Windowsのイベントビューから指定日時の0時から終日までのログを
取り出し、メールに送付して送信するバッチツール」を開発したいです。
VS2013を使っています。
そこで
下記のコードを見ていただきたいのですが
「xml形式でイベントビューのログをフィルタリングする処理」を書いています。
この部分を「外だしにしてツールとしての汎用性を高めたい」です。
xmlファイルを外だしにすることはできたのですが
dt.AddDays(-1).ToStringやdt.ToStringなどC#でシステムの時間を入手してますよね?
この部分をパラメータで外だしにしたxmlに渡したいです。
しかし、調べてみても私の基礎知識の乏しさからか目的の処理を施す方法が見つかりません。
xmlschemaを使うだとかXdocumenntを使うだとかXelementを使うだとか
情報は多いのですが
どの方面にフォーカスして調べていけばいいのかわからないのが現状です。
つたない説明で申し訳ないのですがヒントになるようなものでも
なにか教えていただけないでしょうか。
これが質問①です。
//QueryStringを指定する。QueryStringのフォーマットはXML形式で
//指定日付の0時0分0秒から23時59分59秒までのイベントをフィルタリングします。
DateTime dt = DateTime.Now
string queryString="<QueryList>"
+"<Query Id=\"0\" Path=\"System\">"
+ "<Select Path=\"System\">*[System[(Level=1 or Level=2 or Level=3) and TimeCreated[@SystemTime>='"
+dt.AddDays(-1).ToString("yyyy-MM-dd")
+"T15:00:00.000Z' and @SystemTime<='"
+dt.ToString("yyyy-MM-dd")+"T14:59:59.999Z']]]</Select>"
+"</Query>"
+"</QueryList>";
もう一つお聞きしたいことがあります。
それは「取得したログの中から除外ワードを含むものを除外させる処理」
をする際のコードについてです。
INIファイルに除外ワードを用意して
そこから除外ワードを取得してそれを含むログを除外したいのですが
その方法についても調べ途中ではありますが未だ有効な情報を発見し
活用できていません。
INIファイルを使用しなくても上記の処理ができればxmlファイルでも
かまいません
これについても何かヒントを頂ければと思います。
これが質問②です。
もう丸二日探しつ続けていますが
調べても調べてもわからないことに自分自身呆れますし焦ります
その原因として
わかる人にはわかる情報をキャッチできていないことにあるのではと
感じています
検索し、ヒットしている有用な情報に気付けずスルーしている気がします。
知りたいことを自力で調べる力は経験と馴れで身に着けるしかないと
周りにはアドバイスされますが、早く使える人材になりたくて焦ってしまいます。
(私は入社約3か月目の新社会人です)
調べればわかるだろと思われるような質問を忙しく働いている人に
聞くことはしたくありませんし
何事もできるだけ自分の力で解決したいと思っています。
また、システム開発の仕事としては常に調べながら情報を得ながら
この先も進めていくことになるでしょう。
よって、ほしい情報を調べて活用していく技術は必須と考えます。
この技術をはやく身に着けるために
なにかできることはないでしょうか?
これが質問③です。
長くなりましたが、この3つの質問に関して
ご意見・ご回答をよろしくお願いいたします。
また、質問の内容として抜けている情報があれば
補足いたしますのでお教えください。
No.1ベストアンサー
- 回答日時:
大抵の場合、「やりたい事」がそのまま見つかることはありません。
ですから、やりたい事が「自分が知っている方法で」どうやったらできるか、を考えます。
そうして、どうしてもそれだけではできない部分を調べます。
このためには「問題を分析する」ことが大切です。
今回ので言えば、 XMLとかを考えなければ
@SystemTime>='XXXX' and @SystemTime<='ZZZZ'
のXXXXとZZZZを日付の文字列に置き換える
だけです。「文字列の置き換え」なんていくらでも方法が見つかります。
String.Formatの書式で書いて{0}には開始日時が入ると決めておけば、 String.Format(XMLの内容, 開始日時,...)なんて方法が使えます。
いろんな内容を置き換えるものに「テンプレートエンジン」というのもあります。
※ ここで、特定のタグの中だけ変更対象にしたい、という場合に、XMLの構造解析や要素の抽出等を行うのが、XDocument等の使い方です。
(2)も同じように、問題を分割することです。
「INI等に除外ワードを書いて、それを読み込む」
というプログラムは簡単ですよね?
「対象文字列に、検索文字列が含まれているかどうかを調べる」
というプログラムも簡単ですよね?
これらがわかれば
「対象文字列に、『除外ワード』が含まれているかどうか調べる」を全部の除外ワードについて繰り返して、1つでも含まれていたら除外
というプログラムは、簡単なものをちょっと組合せただけの簡単なプログラムになります。
(3)ですが。
勘と経験もあります。
ですが、(1)(2)を考えると「何を探したらいいのか考えないまま、漠然と探している」のではないでしょうか?
ご回答ありがとうございます。
>大抵の場合、「やりたい事」がそのまま見つかることはありません。
>ですから、やりたい事が「自分が知っている方法で」どうやったらできるか、を考えます。
>そうして、どうしてもそれだけではできない部分を調べます。
>このためには「問題を分析する」ことが大切です。
やはりそうですよね、問題の解決に行き詰ったときには
なぜ難しいのか? → どのように対策するのか?
を考えるべきだと思い
今朝は自分が相対しているツール作成の作業を細分化して
どこに自分が障害を感じているのかをもう一度洗いなおすつもりでした。
そしてkmee様の回答を頂いていたことに気づいたのですが
まず自分の方向としては悪くなかったのだと思えました。
今までは(と言ってもここ数日ですが)
「自分が知っている方法で」については自身の蓄積の浅さから
なにも考え付くものがなく
上司の「パラメータを使ってなんとかする方法があったはず」
ということばを「自分が知っている方法」として調べる方向でした。
>今回ので言えば、 XMLとかを考えなければ
>@SystemTime>='XXXX' and @SystemTime<='ZZZZ'
>のXXXXとZZZZを日付の文字列に置き換える
>だけです。「文字列の置き換え」なんていくらでも方法が見つかります
今回の例で問題の分析方法まで丁寧にあげていただいて
ありがとうございます。
そこまでは単純化して考えることが出来ていたのですが
問題意識としては「外だし」にしたコードの文字列の一部を置き換えるという
部分に障害を感じていました。
このことについては私が変に難しく考えてしまっているのでしょうか?
(私はこの業界で将来的にSEとして働くことを目的として就職し採用されましたが
文系大学出身でありプログラミングはまったくの未経験です
そのため前提としてシステム開発における問題の着眼点が見当違いの可能性があります)
文字数制限に引っかかりましたので続きは補足に述べさせていただきます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- 画像編集・動画編集・音楽編集 【急】【Zbrush】3DCG初心者です。ノートPCでのZbrush動作環境につきまして 1 2023/08/19 17:38
- 仕事術・業務効率化 仕事ができない人間に向いている仕事は…? 5 2023/05/10 01:32
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- Excel(エクセル) Excelで漢字人名が勝手に並び変わる(続) 4 2023/03/21 21:28
- その他(コンピューター・テクノロジー) いじめの問題を解決する方法を考えたのですが, 何か問題点があるか指摘してください. 4 2022/06/21 15:22
- その他(セキュリティ) 役所など、情報系システムのセキュリティが弱くても業務システムに問題ないか 3 2022/11/02 16:38
- Excel(エクセル) Excelでこの式の意味をおしえていただけますでしょうか、またどのように理解したらいいのでしょうか 3 2022/11/18 00:11
- iOS win11 22h2 を win11 21h2 に変更する方法をご教授ください。 2 2023/04/12 01:08
- 離婚・親族 婚姻費用について 2 2023/02/07 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
e-taxで送信ファイルの拡張子が...
-
個別に違う添付ファイルを付け...
-
エクセルで「特定の文字を含む...
-
A4の紙に印刷されている文字を...
-
ビデオファイルのプロパティの...
-
エアコンの冷媒 R410Aの重...
-
TextBoxにフォーカスを与えると...
-
スマホでtxtファイルを編集する...
-
C言語のselectでのファイルディ...
-
GIMP separate+プラグイン クラ...
-
stdio.hの中身
-
エクセルのセルからフォーカス...
-
ポーカーの手の判断
-
拡張子「.IDJ」を、windo...
-
テキストエディタでVBを編集...
-
カメラのフラッシュは大丈夫?
-
PC内で速度を遅くした音源をCD...
-
ファイル数と合計サイズの取得方法
-
iphone のメモが消えてしまいま...
-
ドアスコープが取れない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
e-taxで送信ファイルの拡張子が...
-
個別に違う添付ファイルを付け...
-
スマホでtxtファイルを編集する...
-
エクセルで「特定の文字を含む...
-
A4の紙に印刷されている文字を...
-
Fortniteのクラッシュについて
-
ビデオファイルのプロパティの...
-
iPhoneの内蔵の記憶媒体は、HDD...
-
ガラケーからPCへの写真の取り込み
-
情けない話ですが成田エクスプ...
-
PC内で速度を遅くした音源をCD...
-
TextBoxにフォーカスを与えると...
-
2枚、マイクロSDカードを入...
-
エアコンの冷媒 R410Aの重...
-
リストビューの選択状態を取得...
-
RSSフィードと無断転載について
-
拡張子「.IDJ」を、windo...
-
VBA:カウンターの i の値が開放...
-
ファイル数と合計サイズの取得方法
-
複数のブックを新しいブックのS...
おすすめ情報
>String.Formatの書式で書いて{0}には開始日時が入ると決めておけば、
>String.Format(XMLの内容, 開始日時,...)なんて方法が使えます。
>いろんな内容を置き換えるものに「テンプレートエンジン」というのもあります
利用例まで挙げていただいて大変ありがたいです
String.Format や「テンプレートエンジン」について
調べてみましたが@ITのページで「テンプレートエンジン」の
使い方についての記事を見つけ、自分がやりたいことに近いか又は同じことを
できそうな気がしてきました。この方向で調べ進め理解を深めたうえで
利用してみようと思います。
>※ ここで、特定のタグの中だけ変更対象にしたい、という場合に、XMLの構造解析や要素の抽出等>を行うのが、XDocument等の使い方です。
ありがとうございます、XDocumentについても
頂いたヒントを参考にもう一度理解しようと挑戦してみます。
(2)についてはkmee様のご回答のように
処理を細分化しまさにおっしゃる通りの工程に分けて考えて
調べ進めていたのです。そんなに難しいことではなさそうだとも感じていました。
しかし、実際はINIファイルから文字を一つ取得することはできましたが
除外キーワードは複数必要なため、それをどう実現するかに
つまずきました。
>「対象文字列に、検索文字列が含まれているかどうかを調べる」
を含めた以降の処理はそれを解決してからと思っていますが
未だにこの段階に進めずにいます。
自分でも簡単なことを無駄に時間をかけてしまっている気がします。
>(3)ですが。
>勘と経験もあります。
>ですが、(1)(2)を考えると「何を探したらいいのか考えないまま、漠然と探している」のではないで>しょうか?
この言葉は大げさなと思われるかもしれませんが鐘のように頭に響きました。
私自身では「何をしたらいいのかわからないまま、漠然と探している」と
思ってはいましたが
もっとこの部分について考えるべきだと感じました。
正直に申しますと霧が晴れたわけではありませんが
あらたな推進力を得ることはできたと感じています。
長くなりましたが
丁寧にご回答いただきましたkmee様に
感謝申し上げます。ありがとうございました。