0

我正在使用 Microsoft.Practices.EnterpriseLibrary.Logging。日志文件名设置位于 App.Config 文件中。

我想通过代码获取这个 fileName 属性。我没有找到如何获得它。是否可以?我该怎么做?我正在使用 C#。

谢谢

4

1 回答 1

1

如果您知道配置中侦听器的名称和类型,则可以提取信息:

IConfigurationSource configSource = ConfigurationSourceFactory.Create();

var logSettings = configSource.GetSection(LoggingSettings.SectionName) as LoggingSettings;

var listener = logSettings.TraceListeners
    .SingleOrDefault(t => t.Name == "Rolling Flat File Trace Listener");

if (listener != null)
{
    var fileListener = listener as RollingFlatFileTraceListenerData;

    if (fileListener != null)
    {
        Console.WriteLine(fileListener.FileName);
    }
}

以上是针对 RollingFlatFileTraceListener 的。

或者,如果您只想获取支持 FileName 属性的所有跟踪侦听器的文件名,您可以这样做:

IConfigurationSource configSource = ConfigurationSourceFactory.Create();

var logSettings = configSource.GetSection(LoggingSettings.SectionName) as LoggingSettings;

foreach (var listener in logSettings.TraceListeners)
{
    PropertyInfo property = listener.GetType().GetProperty("FileName");

    if (property != null)
    {
        Console.WriteLine(
            string.Format("FileName for Trace Listener '{0}'={1}", 
                listener.Name, property.GetValue(listener, null)));
    }
}
于 2012-12-19T19:48:17.357 回答