我正在使用Microsoft.Practices.EnterpriseLibrary.Logging。 log fileName设置位于App.Config文件。
我希望通过代码获取此fileName属性。 我没有找到如何得到它。 可能吗?我该怎么做? 我正在使用C#。
由于
答案 0 :(得分: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)));
}
}