私は、プロダクションの1台のマシンでのみ起こっているWPFバインディングの問題をデバッグしようとしています。 。これを行うために、私はバインディングトレース情報をログファイルに出力しようとしています。答えlike this oneに続いて、私はApp.configファイルで設定することにより、ハードコーディングされた場所に出力するようにそれを得ることができました:WPFバインディングエラートレース情報をコードにコンフィグレーションされたログファイルに書き込むことができません
<system.diagnostics>
<sources>
<source name="System.Windows.Data" switchName="SourceSwitch" >
<listeners>
<add name="textListener" />
</listeners>
</source>
</sources>
<switches>
<add name="SourceSwitch" value="All" />
</switches>
<sharedListeners>
<add name="textListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="c:\BindingErrors.log" />
</sharedListeners>
<trace autoflush="true" indentsize="4"/>
</system.diagnostics>
私はc:\
ドライブへの管理者権限を持っているここは、私のマシン上で正常に動作します。問題は、ユーザーが権限を持っている場所のどこかにログを書きたいということです。それらのTEMPフォルダだから私は%TEMP%
環境変数を使用して、このような何かをしたい:
initializeData="%TEMP%\BindingErrors.log"
これは、しかし、動作していない、と私はそれが動作しません推測する - see this answer。その回答のアドバイスに従って、私はApp.configの代わりにコード経由で出力を設定しようとしました。ここで私はこれまで試したものです:
var listener = new
TextWriterTraceListener(Environment.ExpandEnvironmentVariables(
@"%TEMP%\BindingErrors.log"), "myListener");
Trace.Listeners.Add(listener);
Trace.WriteLine("foo"); // just to see if it works at all.
Trace.Flush();
をしかし、これは唯一の%TEMP%
フォルダ内のログファイルにfoo
を書き込みます。バインディングエラーは書き込まれません。私はApp.configファイルが持っていたものを複製しようとしたが、ないSources
コレクションがありませんので、私はTraceSource
をインスタンス化するとき、次のように:
var source = new TraceSource("mySource", SourceLevels.Information);
私はそれで何をすべきか知っている、とノーがありますしないでくださいListeners
私が追加できるコレクションlistener
インスタンス。
MSDNは私のためにすべてを集めているようではない、またはいくつかの重要な詳細が欠落しています。誰かが私が間違っていることを理解するのを助けてくれますか?
ありがとう、ピーター! –