2

そのため、Tracesourceを使用していくつかのエラーをログに記録し、ユーザーのローカルWindowsドキュメント構造(のようなSystem.Environment.SpecialFolder.LocalApplicationData)にログファイルを作成しません。

しかし、設定ファイル内でそのようなことができるかどうかはわかりません。

<system.diagnostics>
    <trace autoflush="true"/>
    <sources>
        <source name="MainSource"
              switchName="MainSwitch"
              switchType="System.Diagnostics.SourceSwitch" >
            <listeners>
                <add name="LogFileListener" />
            </listeners>
        </source>
    </sources>
    <sharedListeners>
        <add name="LogFileListener"
           type="System.Diagnostics.TextWriterTraceListener"
           initializeData="This is the place the output file goes to"
           traceOutputOptions="ProcessId, DateTime, Callstack" />
    </sharedListeners>
    <switches>
        <add name="MainSwitch" value="Verbose" />
    </switches>
</system.diagnostics>

initializeDataは、コンストラクターへのパラメーターであり、カスタムパスを配置する必要がある場所です。

4

2 に答える 2

2

構成ファイル内のログファイルへのパスは絶対的なものであり、特別な変数で想定することはできません。

ただし、動的に作成することもでき、これで問題が解決するはずです。

方法:トレースソースを作成して初期化する

于 2012-08-07T10:55:14.047 に答える
2

以下は、オプションに使用していたサンプルコードです。スキーマを理解するのに役立ちます。

Configuration exeConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

ConfigurationSection diagnosticsSection = exeConfiguration.GetSection("system.diagnostics");

ConfigurationElementCollection switches = diagnosticsSection.ElementInformation
                                                            .Properties["switches"]
                                                            .Value as ConfigurationElementCollection;

foreach (ConfigurationElement switchElement in switches)
{
    Debug.WriteLine("switch: name=" + 
        switchElement.ElementInformation.Properties["name"].Value +
        " value=" + 
        switchElement.ElementInformation.Properties["value"].Value);
}
于 2012-08-07T11:16:27.710 に答える