标签:string 配置文件 factory nlogAssembly assemblyLocation 查找 nlog ex var
https://github.com/NLog/NLog/blob/dev/src/NLog/Config/ConfigurationItemFactory.cs#L530
internal static IEnumerable<KeyValuePair<string, Assembly>> GetAutoLoadingFileLocations() { var nlogAssembly = typeof(ILogger).GetAssembly(); var assemblyLocation = PathHelpers.TrimDirectorySeparators(AssemblyHelpers.GetAssemblyFileLocation(nlogAssembly)); if (!string.IsNullOrEmpty(assemblyLocation)) yield return new KeyValuePair<string, Assembly>(assemblyLocation, nlogAssembly); var entryAssembly = Assembly.GetEntryAssembly(); var entryLocation = PathHelpers.TrimDirectorySeparators(AssemblyHelpers.GetAssemblyFileLocation(Assembly.GetEntryAssembly())); if (!string.IsNullOrEmpty(entryLocation) && !string.Equals(entryLocation, assemblyLocation, StringComparison.OrdinalIgnoreCase)) yield return new KeyValuePair<string, Assembly>(entryLocation, entryAssembly); // TODO Consider to prioritize AppDomain.PrivateBinPath var baseDirectory = PathHelpers.TrimDirectorySeparators(LogFactory.CurrentAppDomain.BaseDirectory); InternalLogger.Debug("Auto loading based on AppDomain-BaseDirectory found location: {0}", baseDirectory); if (!string.IsNullOrEmpty(baseDirectory) && !string.Equals(baseDirectory, assemblyLocation, StringComparison.OrdinalIgnoreCase)) yield return new KeyValuePair<string, Assembly>(baseDirectory, null); } /// <summary> /// Builds the default configuration item factory. /// </summary> /// <returns>Default factory.</returns> private static ConfigurationItemFactory BuildDefaultFactory() { var nlogAssembly = typeof(ILogger).GetAssembly(); var factory = new ConfigurationItemFactory(LogManager.LogFactory.ServiceRepository, null, nlogAssembly); factory.RegisterExternalItems(); #if !NETSTANDARD1_3 try { var assemblyLocation = string.Empty; var extensionDlls = ArrayHelper.Empty<string>(); var fileLocations = GetAutoLoadingFileLocations(); foreach (var fileLocation in fileLocations) { if (string.IsNullOrEmpty(fileLocation.Key)) continue; if (string.IsNullOrEmpty(assemblyLocation)) assemblyLocation = fileLocation.Key; extensionDlls = GetNLogExtensionFiles(fileLocation.Key); if (extensionDlls.Length > 0) { assemblyLocation = fileLocation.Key; break; } } InternalLogger.Debug("Start auto loading, location: {0}", assemblyLocation); LoadNLogExtensionAssemblies(factory, nlogAssembly, extensionDlls); } catch (System.Security.SecurityException ex) { InternalLogger.Warn(ex, "Seems that we do not have permission"); if (ex.MustBeRethrown()) { throw; } } catch (UnauthorizedAccessException ex) { InternalLogger.Warn(ex, "Seems that we do not have permission"); if (ex.MustBeRethrown()) { throw; } } InternalLogger.Debug("Auto loading done"); #endif return factory; }
标签:string,配置文件,factory,nlogAssembly,assemblyLocation,查找,nlog,ex,var 来源: https://www.cnblogs.com/chucklu/p/13299783.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。