none
FileLogEventListener のapp.config への登録方法 RRS feed

  • 質問

  • いつもお世話になっております。基礎的な質問で申し訳ございません。

    VB.NET 2010 で .NET Framework 4.0 のフォームアプリケーションを作成しています。
    OSは、Windows 7 (Professional SP1 64bit) です。

    Debug や Trace の出力にファイルログを使用したく思い、
    MSDNのヘルプを参考に、app.config を加工してみました。

    http://msdn.microsoft.com/ja-jp/library/yhx0xwks.aspx

    sharedListeners のノード内に add ノードで FileLogListener を追加したところ、

    「location 要素が見つかりませんでした」「customlocation 要素が見つかりませんでした」

    と、波線がついてエラーとなります。

    MSDNページのサンプルを動かすには、このWEBページに記載されたこと以外にも
    しなければならない設定などがあるのでしょうか?
    恐れ入りますが、ご教示いただけますと幸いです。

    半年程度前から有志の方のいくつかのWEBサイトを参考に、
    たびたびイベントリスナー関係を試しているのですが、
    一向に成功できず、まず基礎からやりなおして成功させたい意向です。

    恐れ入りますが、宜しくお願い致します。

    <?xml version="1.0"?>
    <configuration>
        <system.diagnostics>
          <trace autoflush="true" indentsize="2" />
            <sources>
                <!-- このセクションでは、My.Application.Log のログ構成を定義します。 -->
              <source name="DefaultSource">
                <listeners>
                  <add name="FileLogListener" />
                </listeners>
              </source>
            </sources>
            <switches>
                <add name="DefaultSwitch" value="Information"/>
            </switches>
            <sharedListeners>
              <add name="FileLogListener" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, 
              Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, 
              PublicKeyToken=b03f5f7f11d50a3a"
        initializeData="FileLogListenerWriter" location="Custom"  customlocation="c:\temp\" />
                <!-- アプリケーション イベント ログに書き込むには、以下のセクションのコメントを解除して、APPLICATION_NAME をアプリケーション名に置き換えます -->
                <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
            </sharedListeners>
        </system.diagnostics>
      <startup><supportedRuntime version="v2.0.50727"/></startup></configuration>

    2012年3月2日 3:53

すべての返信

  • 波線が付くのは、Visual Studioがapp.configの構文チェックをして、警告を出しているだけではありませんか? コンパイラーの出力メッセージにエラーと出ているのですか? 試に実行してみたらどうなりますか?
    2012年3月2日 4:12
  • 佐祐理様

    どうも有難う御座います。

    ビルドしてみましたところ、警告はあくまで警告であったようで、うまく成功しました。

    次のようなコードを実行してみましたところ、
    Debug と Trace に関してはイミディエイトウインドウに出力されたのですが
    ファイルのほうには3つとも出力されませんでした。

        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            My.Application.Log.WriteEntry("test-log", TraceEventType.Information)
            Debug.Write("test-debug")
            Trace.Write("test-trace")
        End Sub

    app.config で警告のついた属性を

    customlocation=c:\test\

    として、c:\test\ フォルダへeveryoneフルコントロール権限を指定してみましたが、
    0 バイトのファイルなども、何も作成されない状況です。

    もしかしまして
    app.config へ追加するだけでは不足で、
    VBのコードでも

    My.Application.Log.TraceSource.Listeners.Add(instance)

    などとして初期化が必要なものなのでしょうか?

    2012年3月2日 5:18
  • 念のため確認ですが、app.configは「実行ファイル名.exe.config」という名前で実行ファイルと同じディレクトリに配置されていますでしょうか? またその内容が古かったりしませんか?
    2012年3月2日 5:42
  • 佐祐理様

    ご教示いただいた件を確認をしてみました。

    VB.NET のプロジェクトフォルダをルートに、
    bin\Debug bin\Release (実行ファイルと同じディレクトリ
    それぞれ 実行ファイル名.exe.config (および 実行ファイル名.vshost.exe.config) の内容は、
    最新(customlocation=c:\test\ ) になっていました。

    まったく難儀しております...

    2012年3月2日 6:22