コンソールにログを出力する方法
前回までで設定ファイル記述までを行いました。今回はコード側でログを出力する記述して行きます。
1.1. Form1のLoadイベントを作成
Form1のデザイン画面を表示して、画面をダブルクリックすることでLoadイベントを生成します。
Loadイベント
using System; using System.Windows.Forms; namespace Meron { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } } }
ハイライト部分のLoadイベントが自動生成されるはずです。
ロガー変数の宣言
Loadイベントは一旦置いておいて、ロガー変数の宣言を行ないます。ロガー変数とは、ログを記載する時に使う変数です。
using System; using System.Windows.Forms; namespace Meron { public partial class Form1 : Form { private static readonly log4net.ILog _logger = log4net.LogManager.GetLogger( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } } }
ハイライト部分が追加部分になります。「_logger」がロガー変数です。ログを出力する際は、この変数に対して、コーディングしていきます。
System.Reflection.MethodBase.GetCurrentMethod().DeclaringTypeの部分は、ログを出している、namespaceとクラス名が自動で表示されるようにこのような設定にしています。この部分は変えてもいいです。例えば”AAA”と記載すれば毎回ログにAAAと表示されますが、どこでログ出力したかが分かりづらくなるため、今回のようにnamespaceとクラス名にしています。もちろん直接NameSpaceとクラス名を記述しても良いのですが、この宣言はログを出力するクラスで毎回宣言することになるので、どこのクラスでも貼り付けるだけでいいようにするためにこのようなコーディングにしています。
1.3. Logの出力を行う
Loadイベントで今宣言した、ロガー変数にドットを付けて「_logger.」と打ち込むとInfoやError、Debugなどが選べるようになるなっています。Infoなら情報、Errorならエラーの情報を出力する際に使用するのですが、今回はinfo使うログを出力してみます。Infoの引数に文字列を渡せばそれがログとして出力されるようになります。
using System; using System.Windows.Forms; namespace Meron { public partial class Form1 : Form { private static readonly log4net.ILog _logger = log4net.LogManager.GetLogger( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { _logger.Info("ろーど!!!"); } } }
試しにこのような感じで、「_logger.Info(“ろーど!!!“);」とコーディングしてみます。この状態で実行すると、コンソールに「ろーど!!!」と出力されるはずです。
実行
それでも実行してみましょう。
とりあえずForm1の画面が表示されるはずですが、それはそれとして、コンソールを確認しましょう。
コンソールの確認
コンソールに文字が出ていることを確認します
意図した感じで出ていますね。INFOと出力されているのは、今回Infoで出力したからで、Errorの場合はここにERRORが表示されます。つまりログレベルが出力されるという事です。出力レベルというのは、ログの重症度を示すとともに、「Info以上しか出力しない」などといいう設定に使うことができます。その出力レベルを使ったログの制御は、この後のレクチャーで解説します。