最新記事

月別アーカイブ(タブ)

dicdicのランニング

カウンタ (ホームページと合算)

リンク

最新トラックバック

検索フォーム

カテゴリ

QRコード

QR

:スポンサーサイト

--/--/-- (--) --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告

237:(ASP.NET v4.0 (C#)) XMLを出力する(新規作成)、そして、追記する(ファイル既存確認)。

2016/09/21 (Wed) 23:29
 ログファイルに実行したSQL文とかを残そうとすると、SQLセンテンスの中に
カンマ(,)やら スペース( )やらコーテーション(")やら が入っていたりして、
区切り文字をどうするかで悩んだりする
たまたま、あるお客のwebDBシステムのログファイルを見る機会があって、
見てみたらなんと、ギリシャ文字が区切り文字としてこっそり使われていた。
これならSQL文中で使われることがないだろうと考えたのか.... 
しかしこれではちょっと格好が悪い。
こんなログ吐いてるって、お客のPMは知っているのかな..。

で、いろいろ考えた末、僕はxmlでログを吐いてみようということにした。
webで散々調べまわしたが...、
xmlを新規に作って要素を出力する方法はいくらでもヒットするのに、
そこに追記する方法はなかなか出てこない。
真っ当にTextStreamで開いて追記しようとすると、ルートエレメントの
閉じタグが邪魔
でなかなか面倒くさい。

と思ったら、C#の名前空間には「Xml.Linq」という便利なものがあって、
こいつをうまく使えば、xmlをTextStreamじゃなくて要素単位で扱える
ようになり、邪魔なルートエレメントの閉じタグをヒラリとかわすことが
できる (らしい) ということがわかってきた。

まず、Xml.Linqを参照できるようにしておいて....、
20160921a
using System.Xml.Linq;


こんなの書いてみた。
sql文(string)と、取得した行数(int)と、コメント(string)を受け取って、
日時とともにログ出力するメソッド。
20160921b

public void XMLLogOut(string Str1, int Num1, string Str2)
{
string DTTM = System.DateTime.Now.ToString();

//要素ごとに出力する内容を列挙
var PreLogLine = new XElement("LogLine");
PreLogLine.Add(new XElement("ELM_TME", DTTM));
PreLogLine.Add(new XElement("ELM_Str1", Str1));
PreLogLine.Add(new XElement("ELM_Num1", Num1));
PreLogLine.Add(new XElement("ELM_Str2", Str2));

//XMLファイル出力パス
string logfn = System.AppDomain.CurrentDomain.BaseDirectory + "test.xml";

//XML文書の作成
var AuditLog = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
AuditLog.Add(new XComment("コメントだじょ~")); //XMLコメントの追加
AuditLog.Add(new XElement("Root_Element")); //Root Elementの作成

if (System.IO.File.Exists(logfn))
{
//ファイルがあれば、現在のxmlをLoadしてAddしてSave
var xmlFile = XElement.Load(logfn);
xmlFile.Add(PreLogLine);
xmlFile.Save(logfn);
}
else
{
//ファイルがなければ、ノードをAddしてSave
AuditLog.Root.Add(PreLogLine);
AuditLog.Save(logfn);
} // if-else のおわり

} // XMLLogOutのおわり


まず、ファイルがない状態で実行するとファイルが生成されて、
その中に最初のログが書き込まれる。

【初回実行後の生成されたxmlファファイル】
20160921c

【2回目実行後】
20160921d
も一回実行すると、追記される。
最後の閉じタグ () の前に追記された。
これはさりげなく素晴らしい!

実際は、ファイル名を[YYMMDD].xmlにして、恒久的にログを
日次堆積管理できるようにして実装した。
使っていて気が付いたのだが、要素の内容にNullが渡されたり
した場合は、もちゃんとしてくれる。
(FC2ブログでタグを書くと表示されないのでテキストでは表現できない)
当たり前と言えは当たり前かも知れないが。

Excelでもちゃんと見れる。
20160921e

おっと。
気が付いてみると、2回目以降にコメントが残っていない。
(てゆか1回目で入ったコメントが消えてる)
まぁ、本質的な問題ではないので気にしないことにしよう... --;)

※エラー処理とか端折ってるので、丸写しは危険です。
 わたしアホなので、質問とかしてもムダです。 ご容赦を。

ASP.NET v4.0 (C#)コメント(0)トラックバック(0)|

236:プラグパーツのトラップ

2016/08/27 (Sat) 10:10

続きを読む »


SEO対策コメント(0)トラックバック(0)|

235:プリンタもらったMP493

2013/08/10 (Sat) 14:30
■最近プリンタが壊れた。 ヘッドの寿命。
■タイミングよく、近所の人に別のプリンタもらった。

■Canon製 MP493 ほとんど新品
 MP493

■へぇー 最近の家庭用プリンタはスキャナが付いているのか。

■しかし、インクのタンクが色ごとに分かれていない。
 一つの色が無くなったら、タンク丸ごと交換が必要
 これはもったいない。
■しかもカートリッジも超高い。 1枚あたりのコストが他を抜きん出て最悪

■とはいえ、新しいのを買うよりいいので、大切に使おう。

テーマ : PC周辺機器 - ジャンル : コンピュータ


パソコンコメント(0)トラックバック(0)|

234:ホームページスクラップブック

2013/08/04 (Sun) 15:35
■以前、メモソフト「紙」について触れた。
■しかしこのほど、「紙」に代わる本格的なWebキャプチャを導入。

■「ホームページスクラップブック」 フリーソフト
ホームページスクラップブック

「紙」は、データのインポート/エクスポートに難あり
「紙」はちょっと凝り過ぎ。 (これまでの進化の過程の都合上しかたがないが)

■ホームページスクラップブックはページが画像として保存されるが、
 同時にすべての文字がテキストデータ化される。
つまりOCR機能を持っている。 これはさり気なく素晴らしい!

データの実体がただのフォルダ構造なので、エクスプローラ上で削除、
 移行、統合してもすぐに認識してくれ、Exp/Impがラクラク
保存後のトリミングや加工も可能

全文検索が可能で、すぐに記憶を辿れる。
■しかも、PDF出力も可能
■これでフリーとはもったいないくらい。
IEのアドオンとして動くので、OperaやFirefoxで使えないのが唯一残念。

テーマ : フリーソフト - ジャンル : コンピュータ


パソコンコメント(0)トラックバック(0)|

233:システム管理者感謝の日

2013/07/26 (Fri) 23:48
■システムは「管理」するものだ。
 「対応」が主になってはならない。

■トラブル対応になるとしゃしゃり出てくる人がいるが
 そういう人間に限って、平時からのきめ細やかな管理や
 緊急時用の手順の整備などを怠っている。

■緊急時やプロジェクト本番時に急に動きが活発になるのは、
 普段からのドキュメント整備や心の準備ができてないからだ。
■そんなのはエンジニアとは呼べない。 しかしこういうタイプは
 意外と客先常駐のベンダーに多い。

■客先の業務に振り回されているうちに、エンジニアとしての
 気風も技術もなくしてしまう。 このことは常駐人員を
 擁している会社にとっても大きな損失だ。
■常駐人員の古株には、こういうのが少なからずいる。
■そして緊急時、さわぐ割にはほとんど役に立たない。
■しかも面倒なことに、そんな人は、焦点を当てるべき観点や
 論点が本線から微妙にズレていて、かえってみんなのお荷物に
 なる。 
口論したくないから、みんななかなか言い出せないし、
 かといい、丁寧に説明するのも面倒になる。

■管理者は火消し屋ではない。 まして、雑用係ではない。

既存の知識や方式は、明日のお荷物になることを認識しつつ、
  基本に立ち返り、自己練磨と普段からの準備を忘れまい。

■システム管理者感謝の日に
  システム管理者感謝の日


テーマ : 働き方 - ジャンル : 就職・お仕事


パソコンコメント(0)トラックバック(0)|

前のページ « ブログ TOP » 次のページ


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。