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