c# - 以编程方式访问企业库日志记录配置(对象模型)?

标签 c# .net logging enterprise-library

我正在使用 Enterprise Library 3.1并希望以编程方式访问 Logging Block (运行时,对象模型)特别是它的 Trace Listeners 和 Sources。

例如,我想访问跟踪监听器对象的 Filename 属性,这样我就可以知道日志文件在磁盘上的位置。

更新:寻找使用运行时对象模型的答案,而不是通过解析 XML 配置。

最佳答案

您可以使用对象模型(用于配置)以编程方式访问日志记录配置。

要获取跟踪监听器的特定数据,您应该查看 TraceListenerData (以及特定的子类)。

此示例显示如何读取配置然后获取 TraceListeners:

// Open config file
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = @"MyApp.exe.config";

Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);

// Get EL log settings
LoggingSettings log = config.GetSection("loggingConfiguration") as LoggingSettings;

// Get TraceListener info
foreach(TraceListenerData listener in log.TraceListeners)
{
    // Check for listener types you care about
    if (listener is RollingFlatFileTraceListenerData)
    {
        RollingFlatFileTraceListenerData data = listener as RollingFlatFileTraceListenerData;
        Console.WriteLine(string.Format("Found RollingFlatFileLIstener with Name={0}, FileName={1}, Header={2}, Footer={3}, RollSizeKB={4}, TimeStampPattern={5},RollFileExistsBehavior={6}, RollInterval={7}, TraceOutputOptions={8}, Formatter={9}, Filter={10}",
            data.Name, data.FileName, data.Header, data.Footer, data.RollSizeKB, 
            data.TimeStampPattern, data.RollFileExistsBehavior, data.RollInterval,
            data.TraceOutputOptions, data.Formatter, data.Filter);
    }
    else // other trace listener types e.g. FlatFileTraceListenerData 
    {
    }
}

关于c# - 以编程方式访问企业库日志记录配置(对象模型)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3485438/

相关文章:

c# - xy坐标系需要可调整大小的数据类型

c# - 如何在具有通用接口(interface)和继承的 C# 中使用 "where"关键字

java - 如何使 Logback 记录一个空行,而不包括模式字符串?

.net - 在较低.NET版本下运行.NET 4程序

.net - 为什么 E_OUTOFMEMORY 后面跟着 "no more threads can be created"?

java - 在 java.util.logging 中,全局记录器有什么用?

python - 使用变量设置日志记录级别

c# - 错误 : Access denied when using the function 'CreateVirtualDisk' in WIN7

c# - 带 OR 语句的 DataTrigger

c# - 在 Autocad 绘图中查找特定属性中具有特定值的对象