プログラム

C#プログラミングレッスン

C#での .NETプログラミングを易しく丁寧に解説するメールマガジンです。「C#プログラミング・レッスン」で、.NETプログラミングをマスターしましょう。

全て表示する >

【C#プログラミングレッスン】 No.135-TraceSource(3)

2007/07/24

┏━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━┳━┳━┓
┃☆┃ C#プログラミングレッスン                         ┃_┃□┃×┃
┣━┻━━━━━━━━━━━━━━━━━━━━━━━━━┻━┻━┻━┫
┃ TraceSource(3)                                             No.135┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

■──────────────────────────────────
■ TraceSourceを構成ファイルで制御する

  TraceSource trace = new TraceSource("MyTraceSource");
  trace.Switch.Level = SourceLevels.Warning;

と書くことで、出力対象となるのが、Warning 以上に絞れるという説明を前々
回にしました。
しかし、いちいちソースを書き換えるのは現実的ではありません。構成ファイ
ルで設定するのが標準的な方法です。

まずは、サンプルコード示します。

TraceSource trace1 = new TraceSource("MyTraceSource01");
TraceSource trace2 = new TraceSource("MyTraceSource02");

trace1.TraceEvent(TraceEventType.Start, 0, "開始です");
trace1.TraceEvent(TraceEventType.Critical, 1, "重大なエラーです");
trace1.TraceEvent(TraceEventType.Error, 2, "エラーです");
trace1.TraceEvent(TraceEventType.Warning, 3, "警告です");
trace1.TraceEvent(TraceEventType.Information, 4, "情報です");
trace1.TraceEvent(TraceEventType.Stop, 5, "終了です");

trace2.TraceEvent(TraceEventType.Start, 0, "開始です");
trace2.TraceEvent(TraceEventType.Critical, 1, "重大なエラーです");
trace2.TraceEvent(TraceEventType.Error, 2, "エラーです");
trace2.TraceEvent(TraceEventType.Warning, 3, "警告です");
trace2.TraceEvent(TraceEventType.Information, 4, "情報です");
trace2.TraceEvent(TraceEventType.Stop, 5, "終了です");

このようなソースがあったときに、"MyTraceSource01" に対して、Switch.Level
を設定するには、以下のような構成ファイルを書きます。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <sources>
      <source name="MyTraceSource01" switchName="sourceSwitch"
        switchType="System.Diagnostics.SourceSwitch"/>
    </sources>
    <switches>
      <add name="sourceSwitch" value="Warning"/>
    </switches>
  </system.diagnostics>
</configuration>

構成ファイルに記述している name="MyTraceSource01" は、プログラムのコー
ドに書かれている"MyTraceSource01" と一致させます。これで、どの 
TraceSource のインスタンスが対象かを特定しています。
また、switchName="sourceSwitch" の右辺は、<switches> 要素にある 
name="sourceSwitch" と一致させます。

この実行結果は、

MyTraceSource01 Critical: 1 : 重大なエラーです
MyTraceSource01 Error: 2 : エラーです
MyTraceSource01 Warning: 3 : 警告です

となります。
trace2の出力はどうなったんだろう?と疑問に思う方もいると思います。
Switch.Level の初期値は、SourceLevels.Off に設定されているため、
trace2は出力されません。
trace2 についても Switch.Level を設定する必要があります。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <sources>
      <source name="MyTraceSource01" switchName="sourceSwitch01"
        switchType="System.Diagnostics.SourceSwitch"/>
      <source name="MyTraceSource02" switchName="sourceSwitch02"
        switchType="System.Diagnostics.SourceSwitch"/>
    </sources>
    <switches>
      <add name="sourceSwitch01" value="Warning"/>
      <add name="sourceSwitch02" value="Error"/>
    </switches>
  </system.diagnostics>
</configuration>

と記述すれば、結果は以下のようになります。

MyTraceSource01 Critical: 1 : 重大なエラーです
MyTraceSource01 Error: 2 : エラーです
MyTraceSource01 Warning: 3 : 警告です
MyTraceSource02 Critical: 1 : 重大なエラーです
MyTraceSource02 Error: 2 : エラーです

┌─┬─────────────────────────┬─┬─┬─┐
│☆│ C#プログラミングレッスン  (ぼぼ週刊)            │_│□│×│
├─┴─────────────────────────┴─┴─┴─┤
│ Published by Gushwell.                                           │
│ Copyright (C) 2004-2007 Gushwell All rights reserved.            │
│ Microsoft MVP Visual Developer - Visual C#(Apr 2005 - Mar 2008)  │
│-------------------- Gushwell's Page ---------------------------- │
│ 窓際プログラマーの独り言  :http://blog.livedoor.jp/gushwell/    │
│ 窓際プログラマーの読書三昧:http://gushwell.jugem.jp/            │
│ C#デザインパターン :                                             │
│  『増補改訂版Java言語で学ぶデザインパターン入門 / 結城 浩(著)』  │
│   のサンプルコードをC#に移植したものを掲載しています。           │
│   移植後のコードの公開は、結城氏の了解を得ています。             │
│   http://blog.livedoor.jp/gushwell/archives/50333227.html        │
└─────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
       【ポコカ】がおサイフ携帯の新しい利用方法を提案します。

  お店のクーポン・会員カード・スタンプカードをケータイにひとまとめ

         ☆ おサイフケータイとお店をつなげるポータルサイト ☆
           Pococa!(R)ポコカ URL: http://www.pococa.com/ct/
---------------------------------------------------------------------


規約に同意してこのメルマガに登録/解除する

メルマガ情報

創刊日:2004-08-12  
最終発行日:  
発行周期:ほぼ週刊  
Score!: 非表示   

コメント一覧コメントを書く

この記事にコメントを書く

上の画像で表示されている文字を半角英数で入力してください。

※コメントの内容はこのページに公開されます。発行者さんだけが閲覧できるものではありません。 コメントの投稿時は投稿者規約への同意が必要です。

  • コメントはありません。