L'exploitation forestière dans Asp.net application MVC à l'aide de log4net

Le mien est un Asp.net MVC 4 application. J'ai besoin de mettre en œuvre les suivantes;
Selon le niveau de journal au web.fichier de configuration (par exemple. 1/2/3/4)

Je dois ouvrir une session:

1 :

  • Méthodes
  • Méthodes fin
  • Application Avertissement

L'Exception De L'Application

2:

  • Application Des Avertissements
  • Application Des Exceptions

3:

  • Application Des Exceptions

4:

  • Aucun

J'ai besoin pour atteindre cet objectif global de filtre(s).

de bien vouloir me donner quelques conseils.

Merci d'avance.


Résolu

Voici mes étapes

J'ai créé le Filtre suivant la classe

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class LoggerFilterAttribute : ActionFilterAttribute
{
private ILog _objLog4Net = null;
string logLevel = string.Empty;
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
_objLog4Net = LogManager.GetLogger(filterContext.RouteData.Values["controller"].ToString());
logLevel = GetLogLevel();
if (logLevel == "1")
{
_objLog4Net.Debug(string.Concat("Entered ", filterContext.Controller.GetType().ToString(), "'s ", filterContext.ActionDescriptor.ActionName, " method"));
}
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
_objLog4Net = LogManager.GetLogger(filterContext.RouteData.Values["controller"].ToString());
logLevel = GetLogLevel();
if (logLevel == "1")
{
_objLog4Net.Debug(string.Concat("Existing ", filterContext.Controller.GetType().ToString(), "'s ", filterContext.ActionDescriptor.ActionName, " method"));
}
}
private string GetLogLevel()
{
return ConfigurationManager.AppSettings["LOGLEVEL"].ToLower().ToString();
}
}

Cette classe va vérifier pour la journalisation dans le fichier de configuration si trouvé 1 Par
OnActionExecuting()
et OnActionExecuted()
Journal pour la Méthode de Début et de Fin de la Méthode.

Plus suivant est le ExceptionFilter classe pour l'enregistrement exception

public class ExceptionFilterAttribute : HandleErrorAttribute
{
private ILog _objLog4Net = null;
string logLevel = string.Empty;
public override void OnException(ExceptionContext filterContext)
{
_objLog4Net = LogManager.GetLogger(filterContext.RouteData.Values["controller"].ToString());
logLevel = GetLogLevel();
if (logLevel == "1" || logLevel == "2")
{
_objLog4Net.Error(filterContext.Exception.Message, filterContext.Exception);
}
if (logLevel == "3")
{
if (filterContext.Exception.GetType().IsSubclassOf(typeof(ApplicationException)))
{
_objLog4Net.Error(filterContext.Exception.Message, filterContext.Exception);
}
}
}
private string GetLogLevel()
{
return ConfigurationManager.AppSettings["LOGLEVEL1"].ToLower().ToString();
}
}

Cette classe selon le niveau de journal, Journaux de Toutes les Exceptions ou seulement les exceptions de l'Application.

Si Loglevel n'est pas de conditions d'une vraie /rien n'est enregistré.

InformationsquelleAutor shoab | 2013-08-27