我正在使用 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/