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 回答