2022-04-08に更新

ロガーを設計し直そうぜ(^~^)?

ぐげー(^~^) 公開下書き

ramen-tabero-futsu2.png
「 ロガーを設計し直そうぜ?」

kifuwarabe-futsu.png
「 あるものを使うのが そんなに嫌か」

ohkina-hiyoko-futsu2.png
「 こだわるからよ」

出力先

  • 他のアプリ(標準出力)
  • テキストファイル
  • コンソール(標準エラー出力)

ramen-tabero-futsu2.png
「 👆 この3か所は しょっちゅう使うんだぜ!」

ohkina-hiyoko-futsu2.png
「 全部 ストリームよ」

ramen-tabero-futsu2.png
「 他のアプリと通信したいとき、
ファイルにログを残したいとき、
コンソールに出したいとき、と 使い分けたいんだぜ」

使い勝手

Pencil.Write("7g7f")
Pencil.WriteLine("position startpos")

Pencil.Trace.WriteLine("Start")
Pencil.Debug.WriteLine("value = %s", errMsg)
Pencil.Info.WriteLine("100 NPS")
Pencil.Notice.WriteLine("usinewgame")
Pencil.Warn.WriteLine("Memory danger")
Pencil.Error.WriteLine("Not found file")
Pencil.Fatal.WriteLine("Crush")

ramen-tabero-futsu2.png
「 👆 Pencil オブジェクトを用意して、正常系とログの両方をぶら下げてはどうか?」

ohkina-hiyoko-futsu2.png
「 6文字は長いかなあ」

Out.Write("7g7f")
Out.WriteLine("position startpos")

Out.Trace.WriteLine("Start")
Out.Debug.WriteLine("value = %s", errMsg)
Out.Info.WriteLine("100 NPS")
Out.Notice.WriteLine("usinewgame")
Out.Warn.WriteLine("Memory danger")
Out.Error.WriteLine("Not found file")
Out.Fatal.WriteLine("Crush")

ramen-tabero-futsu2.png
「 👆 Out なら?」

ohkina-hiyoko-futsu2.png
「 あり かなあ」

kifuwarabe-futsu.png
「 そのようには うまくはいかない」

Out.Write("7g7f")
Out.WriteLine("position startpos")

Log.Trace.WriteLine("Start")
Log.Debug.WriteLine("value = %s", errMsg)
Log.Info.WriteLine("100 NPS")
Log.Notice.WriteLine("usinewgame")
Log.Warn.WriteLine("Memory danger")
Log.Error.WriteLine("Not found file")
Log.Fatal.WriteLine("Crush")

kifuwarabe-futsu.png
「 👆 お父んは 正常形と ログは 別オブジェクトで作っているぜ」

My.Out.Write("7g7f")
My.Out.WriteLine("position startpos")

My.Log.Trace.WriteLine("Start")
My.Log.Debug.WriteLine("value = %s", errMsg)
My.Log.Info.WriteLine("100 NPS")
My.Log.Notice.WriteLine("usinewgame")
My.Log.Warn.WriteLine("Memory danger")
My.Log.Error.WriteLine("Not found file")
My.Log.Fatal.WriteLine("Crush")

ramen-tabero-futsu2.png
「 👆 My オブジェクトを用意して、 Out と Log の両方をぶら下げてはどうか?」

ohkina-hiyoko-futsu2.png
「 まし かなあ」

ramen-tabero-futsu2.png
「 Log も、 ファイルに書き出すだけのやつと、
ファイルと 標準エラーの両方に書き出すやつの 2つに分けたいんだが」

ohkina-hiyoko-futsu2.png
「 Quiet と、Log にしたらどう?」

kifuwarabe-futsu.png
「 LogNotEcho と、 Log にしたらどうか」

My.Out.Write("7g7f")
My.Out.WriteLine("position startpos")

My.Log.Trace.WriteLine("Start")
My.Log.Debug.WriteLine("value = %s", errMsg)
My.Log.Info.WriteLine("100 NPS")
My.Log.Notice.WriteLine("usinewgame")
My.Log.Warn.WriteLine("Memory danger")
My.Log.Error.WriteLine("Not found file")
My.Log.Fatal.WriteLine("Crush")

My.LogNotEcho.Trace.WriteLine("Start")
My.LogNotEcho.Debug.WriteLine("value = %s", errMsg)
My.LogNotEcho.Info.WriteLine("100 NPS")
My.LogNotEcho.Notice.WriteLine("usinewgame")
My.LogNotEcho.Warn.WriteLine("Memory danger")
My.LogNotEcho.Error.WriteLine("Not found file")
My.LogNotEcho.Fatal.WriteLine("Crush")

ramen-tabero-futsu2.png
「 👆 ほしい感じのものになってきたぜ」

My.Out.Write("7g7f")
My.Out.WriteLn("position startpos")

My.Log.TraceLn("Start")
My.Log.DebugLn("value = %s", errMsg)
My.Log.InfoLn("100 NPS")
My.Log.NoticeLn("usinewgame")
My.Log.WarnLn("Memory danger")
My.Log.ErrorLn("Not found file")
My.Log.FatalLn("Crush")

My.LogNotEcho.TraceLn("Start")
My.LogNotEcho.DebugLn("value = %s", errMsg)
My.LogNotEcho.InfoLn("100 NPS")
My.LogNotEcho.NoticeLn("usinewgame")
My.LogNotEcho.WarnLn("Memory danger")
My.LogNotEcho.ErrorLn("Not found file")
My.LogNotEcho.FatalLn("Crush")

ramen-tabero-futsu2.png
「 👆 こうしたら良くないかだぜ?」

ohkina-hiyoko-futsu2.png
「 My とか見たことないから、 App にしない?」

App.Out.Write("7g7f")
App.Out.WriteLn("position startpos")

App.Log.TraceLn("Start")
App.Log.DebugLn("value = %s", errMsg)
App.Log.InfoLn("100 NPS")
App.Log.NoticeLn("usinewgame")
App.Log.WarnLn("Memory danger")
App.Log.ErrorLn("Not found file")
App.Log.FatalLn("Crush")

App.LogNotEcho.TraceLn("Start")
App.LogNotEcho.DebugLn("value = %s", errMsg)
App.LogNotEcho.InfoLn("100 NPS")
App.LogNotEcho.NoticeLn("usinewgame")
App.LogNotEcho.WarnLn("Memory danger")
App.LogNotEcho.ErrorLn("Not found file")
App.LogNotEcho.FatalLn("Crush")

ramen-tabero-futsu2.png
「 👆 調整!」

kifuwarabe-futsu.png
「 そんなに形を決めてかかるのだったら、1つのオブジェクトにしたいよな」

// 7 Level

Out.Trace("Start")
Out.TraceLn("Start")

Out.Debug("value = %s", errMsg)
Out.DebugLn("value = %s", errMsg)

Out.Info("100 NPS")
Out.InfoLn("100 NPS")

Out.Notice("usinewgame")
Out.NoticeLn("usinewgame")

Out.Warn("Memory danger")
Out.WarnLn("Memory danger")

Out.Error("Not found file")
Out.ErrorLn("Not found file")

Out.Fatal("Crush")
Out.FatalLn("Crush")

// Plus 1

Out.Write("7g7f")
Out.WriteLn("position startpos")

ohkina-hiyoko-futsu2.png
「 👆 こういうオブジェクトを作って、
パラメーターで3種 生成したらいいんじゃないの?」

ramen-tabero-futsu2.png
「 そうしよかな」

// 7 Level

Out.Trace("Start")
Out.Trace("Start\n")

Out.Debug("value = %s", errMsg)
Out.Debug("value = %s\n", errMsg)

Out.Info("100 NPS")
Out.Info("100 NPS\n")

Out.Notice("usinewgame")
Out.Notice("usinewgame\n")

Out.Warn("Memory danger")
Out.Warn("Memory danger\n")

Out.Error("Not found file")
Out.Error("Not found file\n")

Out.Fatal("Crush")
Out.Fatal("Crush\n")

// Plus 1

Out.Write("7g7f")
Out.Write("position startpos\n")

ramen-tabero-futsu2.png
「 👆 改行コードの責任を負いたくないので、やっぱ こうで」

何度でもクリック!→

むずでょ

光速のアカウント凍結されちゃったんで……。ゲームプログラムを独習中なんだぜ☆電王戦IIに出た棋士もコンピューターもみんな好きだぜ☆▲(パソコン将棋)WCSC29一次予選36位、SDT5予選42位▲(パソコン囲碁)AI竜星戦予選16位

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

むずでょ の最近の記事