/// <summary> /// Inicializa el estado del log y carga los valores para su correcto funcionamiento. Debe ser llamado cada vez que se inicie un hilo, y antes /// de logear cualquier cosa. (Se recomienda que en una aplicación web, se llame en Application_BeginRequest). /// </summary> /// <remarks> /// Registro de versiones: /// /// 1.0 02/03/2015 Marcos Abraham Hernández Bravo (Ada Ltda.): versión inicial. /// </remarks> public static void Inicializar() { Log4MeManager.Inicializar(); }
/// <summary> /// Obtiene los escritores en los que el método proporcionado cumple con las condiciones señaladas. /// </summary> /// <remarks> /// Registro de versiones: /// /// 1.0 10/04/2016 Marcos Abraham Hernández Bravo (Ada Ltda.): versión inicial. /// </remarks> /// <param name="metodo">Método a validar.</param> /// <returns>Lista de escritores.</returns> public static IList <ALogWriter> ObtenerWriters(MethodBase metodo) { Log4MeManager.Inicializar(); IList <ALogWriter> retorno = new List <ALogWriter>(); if (Log4MeManager.Configuration != null) { foreach (ALogWriter writer in Log4MeManager.Configuration.Writers) { if (writer.Modo.Codigo.Equals(Modo.On.Codigo, StringComparison.InvariantCultureIgnoreCase)) { /* * Se establece un número que establece la razón de la exclusión: * - 0 = No se excluye. * - 1 = Ensamblado. * - 2 = NameSpace. * - 3 = Clase. * - 4 = Método. */ int prioridadExcluir = 0; // Para excluir un registro, este debe cumplir con todas las condiciones del tag (operación &&). foreach (ExcludeTag excluido in writer.Excluidos) { if (excluido.Metodo != null) { if (excluido.Metodo.isInternal && metodo.ReflectedType.IsNestedAssembly) { prioridadExcluir = 4; } if (excluido.Metodo.isPrivate && metodo.ReflectedType.IsNestedPrivate) { prioridadExcluir = 4; } if (excluido.Metodo.isPublic && metodo.ReflectedType.IsNestedPublic) { prioridadExcluir = 4; } if (excluido.Metodo.isStatic && metodo.IsStatic) { prioridadExcluir = 4; } if (CumpleCondicionSimple(excluido.Metodo, metodo.Name, metodo.ToString())) { prioridadExcluir = 4; } if (prioridadExcluir == 0) { continue; } } if (excluido.Clase != null) { if (excluido.Clase.isInternal && metodo.DeclaringType.IsNestedAssembly) { prioridadExcluir = 3; } if (excluido.Clase.isPrivate && metodo.DeclaringType.IsNestedPrivate) { prioridadExcluir = 3; } if (excluido.Clase.isPublic && metodo.DeclaringType.IsNestedPublic) { prioridadExcluir = 3; } if (CumpleCondicionSimple(excluido.Clase, metodo.DeclaringType.Name, metodo.DeclaringType.FullName)) { prioridadExcluir = 3; } if (prioridadExcluir == 0) { continue; } } if (excluido.NameSpace != null) { if (CumpleCondicionSimple(excluido.NameSpace, metodo.DeclaringType.Namespace, metodo.DeclaringType.Namespace)) { prioridadExcluir = 2; } if (prioridadExcluir == 0) { continue; } } if (excluido.Assembly != null) { Assembly ensamblado = metodo.DeclaringType.Assembly; object[] atributosEnsamblado = ensamblado.GetCustomAttributes(true); if (excluido.Assembly.Title != null) { var atributo = atributosEnsamblado.OfType <AssemblyTitleAttribute>().FirstOrDefault(); if (atributo != null && CumpleCondicionSimple(excluido.Assembly.Title, atributo.Title, ensamblado.GetName().FullName)) { prioridadExcluir = 1; } if (prioridadExcluir == 0) { continue; } } if (!string.IsNullOrEmpty(excluido.Assembly.Configuration)) { var atributo = atributosEnsamblado.OfType <AssemblyConfigurationAttribute>().FirstOrDefault(); if (atributo != null && excluido.Assembly.Configuration.Equals(atributo.Configuration, StringComparison.InvariantCultureIgnoreCase)) { prioridadExcluir = 1; } if (prioridadExcluir == 0) { continue; } } if (excluido.Assembly.Company != null) { var atributo = atributosEnsamblado.OfType <AssemblyCompanyAttribute>().FirstOrDefault(); if (atributo != null && CumpleCondicionSimple(excluido.Assembly.Company, atributo.Company, atributo.Company)) { prioridadExcluir = 1; } if (prioridadExcluir == 0) { continue; } } if (!string.IsNullOrEmpty(excluido.Assembly.GUID)) { var atributo = atributosEnsamblado.OfType <GuidAttribute>().FirstOrDefault(); if (atributo != null && excluido.Assembly.GUID.Equals(atributo.Value, StringComparison.InvariantCultureIgnoreCase)) { prioridadExcluir = 1; } if (prioridadExcluir == 0) { continue; } } if (!string.IsNullOrEmpty(excluido.Assembly.MinimalVersion) || !string.IsNullOrEmpty(excluido.Assembly.MaxiumVersion)) { string minimalVersion = !string.IsNullOrEmpty(excluido.Assembly.MinimalVersion) ? excluido.Assembly.MinimalVersion : "*"; string maxiumVersion = !string.IsNullOrEmpty(excluido.Assembly.MaxiumVersion) ? excluido.Assembly.MaxiumVersion : "*"; var atributo = atributosEnsamblado.OfType <AssemblyVersionAttribute>().FirstOrDefault(); if (AssemblyTag.CompararVersiones(atributo.Version, minimalVersion) == -1 && AssemblyTag.CompararVersiones(atributo.Version, maxiumVersion) > -1) { prioridadExcluir = 1; } if (prioridadExcluir == 0) { continue; } } if (!string.IsNullOrEmpty(excluido.Assembly.MinimalFileVersion) || !string.IsNullOrEmpty(excluido.Assembly.MaxiumFileVersion)) { string minimalFileVersion = !string.IsNullOrEmpty(excluido.Assembly.MinimalFileVersion) ? excluido.Assembly.MinimalFileVersion : "*"; string maxiumFileVersion = !string.IsNullOrEmpty(excluido.Assembly.MaxiumFileVersion) ? excluido.Assembly.MaxiumFileVersion : "*"; var atributo = atributosEnsamblado.OfType <AssemblyFileVersionAttribute>().FirstOrDefault(); if (AssemblyTag.CompararVersiones(atributo.Version, minimalFileVersion) == -1 && AssemblyTag.CompararVersiones(atributo.Version, maxiumFileVersion) > -1) { prioridadExcluir = 1; } } } if (prioridadExcluir > 0) { break; } } /* * Se establece un número que establece la razón de la inclusión: * - 0 = No se incluye. * - 1 = Ensamblado. * - 2 = NameSpace. * - 3 = Clase. * - 4 = Método. */ int prioridadIncluir = 0; foreach (IncludeTag incluido in writer.Incluidos) { if (incluido.Metodo != null) { if (incluido.Metodo.isInternal && metodo.ReflectedType.IsNestedAssembly) { prioridadIncluir = 4; } if (incluido.Metodo.isPrivate && metodo.ReflectedType.IsNestedPrivate) { prioridadIncluir = 4; } if (incluido.Metodo.isPublic && metodo.ReflectedType.IsNestedPublic) { prioridadIncluir = 4; } if (incluido.Metodo.isStatic && metodo.IsStatic) { prioridadIncluir = 4; } if (CumpleCondicionSimple(incluido.Metodo, metodo.Name, metodo.ToString())) { prioridadIncluir = 4; } if (prioridadIncluir == 0) { continue; } } if (incluido.Clase != null) { if (incluido.Clase.isInternal && metodo.DeclaringType.IsNestedAssembly) { prioridadIncluir = 3; } if (incluido.Clase.isPrivate && metodo.DeclaringType.IsNestedPrivate) { prioridadIncluir = 3; } if (incluido.Clase.isPublic && metodo.DeclaringType.IsNestedPublic) { prioridadIncluir = 3; } if (CumpleCondicionSimple(incluido.Clase, metodo.DeclaringType.Name, metodo.DeclaringType.FullName)) { prioridadIncluir = 3; } if (prioridadIncluir == 0) { continue; } } if (incluido.NameSpace != null) { if (CumpleCondicionSimple(incluido.NameSpace, metodo.DeclaringType.Namespace, metodo.DeclaringType.Namespace)) { prioridadIncluir = 2; } if (prioridadIncluir == 0) { continue; } } if (incluido.Assembly != null) { Assembly ensamblado = metodo.DeclaringType.Assembly; object[] atributosEnsamblado = ensamblado.GetCustomAttributes(true); if (incluido.Assembly.Title != null) { var atributo = atributosEnsamblado.OfType <AssemblyTitleAttribute>().FirstOrDefault(); if (atributo != null && CumpleCondicionSimple(incluido.Assembly.Title, atributo.Title, ensamblado.GetName().FullName)) { prioridadIncluir = 1; } if (prioridadIncluir == 0) { continue; } } if (!string.IsNullOrEmpty(incluido.Assembly.Configuration)) { var atributo = atributosEnsamblado.OfType <AssemblyConfigurationAttribute>().FirstOrDefault(); if (atributo != null && incluido.Assembly.Configuration.Equals(atributo.Configuration, StringComparison.InvariantCultureIgnoreCase)) { prioridadIncluir = 1; } if (prioridadIncluir == 0) { continue; } } if (incluido.Assembly.Company != null) { var atributo = atributosEnsamblado.OfType <AssemblyCompanyAttribute>().FirstOrDefault(); if (atributo != null && CumpleCondicionSimple(incluido.Assembly.Company, atributo.Company, atributo.Company)) { prioridadIncluir = 1; } if (prioridadIncluir == 0) { continue; } } if (!string.IsNullOrEmpty(incluido.Assembly.GUID)) { var atributo = atributosEnsamblado.OfType <GuidAttribute>().FirstOrDefault(); if (atributo != null && incluido.Assembly.GUID.Equals(atributo.Value, StringComparison.InvariantCultureIgnoreCase)) { prioridadIncluir = 1; } if (prioridadIncluir == 0) { continue; } } if (!string.IsNullOrEmpty(incluido.Assembly.MinimalVersion) || !string.IsNullOrEmpty(incluido.Assembly.MaxiumVersion)) { string minimalVersion = !string.IsNullOrEmpty(incluido.Assembly.MinimalVersion) ? incluido.Assembly.MinimalVersion : "*"; string maxiumVersion = !string.IsNullOrEmpty(incluido.Assembly.MaxiumVersion) ? incluido.Assembly.MaxiumVersion : "*"; var atributo = atributosEnsamblado.OfType <AssemblyVersionAttribute>().FirstOrDefault(); if (AssemblyTag.CompararVersiones(atributo.Version, minimalVersion) == -1 && AssemblyTag.CompararVersiones(atributo.Version, maxiumVersion) > -1) { prioridadIncluir = 1; } if (prioridadIncluir == 0) { continue; } } if (!string.IsNullOrEmpty(incluido.Assembly.MinimalFileVersion) || !string.IsNullOrEmpty(incluido.Assembly.MaxiumFileVersion)) { string minimalFileVersion = !string.IsNullOrEmpty(incluido.Assembly.MinimalFileVersion) ? incluido.Assembly.MinimalFileVersion : "*"; string maxiumFileVersion = !string.IsNullOrEmpty(incluido.Assembly.MaxiumFileVersion) ? incluido.Assembly.MaxiumFileVersion : "*"; var atributo = atributosEnsamblado.OfType <AssemblyFileVersionAttribute>().FirstOrDefault(); if (AssemblyTag.CompararVersiones(atributo.Version, minimalFileVersion) == -1 && AssemblyTag.CompararVersiones(atributo.Version, maxiumFileVersion) > -1) { prioridadIncluir = 1; } } } } if ((prioridadIncluir > 0 && prioridadExcluir == 0) || (prioridadIncluir < prioridadExcluir)) { retorno.Add(writer); } } } } return(retorno); }