【问题标题】:Adding a custom path for a Tracesource TextWriterTraceListener output in config在配置中为 Tracesource TextWriterTraceListener 输出添加自定义路径
【发布时间】:2012-08-04 08:54:30
【问题描述】:

所以我使用 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 我认为是构造函数的一个参数,是我必须放置自定义路径的地方。

【问题讨论】:

标签: c# path app-config relative-path trace


【解决方案1】:

配置文件中日志文件的路径是绝对路径,不能被任何特殊变量假定。

但是,您可以动态创建它,这应该可以解决您的问题

How to: Create and Initialize Trace Sources

【讨论】:

    【解决方案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);
    }
    

    【讨论】:

    • 如果我们手动打开配置文件,是否有可能自动配置跟踪(通过配置) - 就像我们在普通的 .net 应用程序中所做的那样?跨度>
    猜你喜欢
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多