public ConditionMethodExpression(string name, ConditionExpressionCollection parameters) { _name = name; _parameters = parameters; _methodInfo = ConditionMethodFactory.CreateConditionMethod(_name); if (_methodInfo == null) { Internal.InternalLogger.Error("Condition method: '{0}' not found", name); throw new ArgumentException("Condition method not found: '" + name + "'"); } ParameterInfo[] formalParameters = _methodInfo.GetParameters(); if (formalParameters.Length >= 0) { _acceptsLogEvent = (formalParameters[0].ParameterType == typeof(LogEventInfo)); } else { _acceptsLogEvent = false; } int actualParameterCount = _parameters.Count; if (_acceptsLogEvent) { actualParameterCount++; } if (formalParameters.Length != actualParameterCount) { Internal.InternalLogger.Error("Condition method: '{0}' expects {1} parameters. Passed {2}", name, formalParameters.Length, actualParameterCount); throw new ConditionParseException(String.Format("Condition method: '{0}' expects {1} parameters. Passed {2}", name, formalParameters.Length, actualParameterCount)); } }
private void AddExtensionsFromElement(XmlElement element, string baseDirectory) { if (element == null) { return; } foreach (XmlElement targetElement in PropertyHelper.GetChildElements(element)) { if (EqualsCI(targetElement.LocalName, "add")) { string assemblyFile = GetCaseInsensitiveAttribute(targetElement, "assemblyFile"); string extPrefix = GetCaseInsensitiveAttribute(targetElement, "prefix"); string prefix; if (extPrefix != null && extPrefix.Length != 0) { prefix = extPrefix + "."; } else { prefix = String.Empty; } if (assemblyFile != null && assemblyFile.Length > 0) { try { string fullFileName = Path.Combine(baseDirectory, assemblyFile); InternalLogger.Info("Loading assemblyFile: {0}", fullFileName); Assembly asm = Assembly.LoadFrom(fullFileName); TargetFactory.AddTargetsFromAssembly(asm, prefix); LayoutRendererFactory.AddLayoutRenderersFromAssembly(asm, prefix); FilterFactory.AddFiltersFromAssembly(asm, prefix); LayoutFactory.AddLayoutsFromAssembly(asm, prefix); ConditionMethodFactory.AddConditionMethodsFromAssembly(asm, prefix); } catch (Exception ex) { InternalLogger.Error("Error loading extensions: {0}", ex); if (LogManager.ThrowExceptions) { throw new NLogConfigurationException("Error loading extensions: " + assemblyFile, ex); } } continue; } ; string assemblyName = GetCaseInsensitiveAttribute(targetElement, "assembly"); if (assemblyName != null && assemblyName.Length > 0) { try { InternalLogger.Info("Loading assemblyName: {0}", assemblyName); Assembly asm = Assembly.Load(assemblyName); TargetFactory.AddTargetsFromAssembly(asm, prefix); LayoutRendererFactory.AddLayoutRenderersFromAssembly(asm, prefix); FilterFactory.AddFiltersFromAssembly(asm, prefix); LayoutFactory.AddLayoutsFromAssembly(asm, prefix); ConditionMethodFactory.AddConditionMethodsFromAssembly(asm, prefix); } catch (Exception ex) { InternalLogger.Error("Error loading extensions: {0}", ex); if (LogManager.ThrowExceptions) { throw new NLogConfigurationException("Error loading extensions: " + assemblyName, ex); } } continue; } ; } } }