Question

Je dois modifier le nom de l'application en fonction de la configuration que j'utilise dans Visual Studio. Par exemple, si je suis en configuration de débogage, je souhaite que le nom de l'application s'affiche sous la forme "App_Debug" dans le champ Application de la table Elmah_Error. Est-ce que quelqu'un a de l'expérience avec ça? Ou y a-t-il un autre moyen de le faire?

Était-ce utile?

La solution

Par défaut, Elmah utilise le GUID de l'application AppPool comme nom d'application par défaut. Il l'utilise comme clé pour identifier les erreurs dans la table Elmah_Error lorsque vous regardez l'interface Web créée via son module HTTP.

J'ai été chargé d'explorer cette option pour mon entreprise plus tôt cette année. Je ne pouvais pas trouver un moyen de manipuler cela par défaut, car Elmah extrait le nom de l'application de HttpRuntime.AppDomainAppId dans le fichier ErrorLog.cs. Vous pouvez le manipuler avec la clé de votre choix. cependant, il s'agit du GUID de l'AppPool.

Cela dit, j'ai pu manipuler le fichier ErrorLog.cs pour transformer Elmah en un framework appelable au lieu d'un gestionnaire basé sur un gestionnaire et me permettre de définir le nom de l'application. En fin de compte, j'ai modifié ErrorLog.cs afin d'inclure une propriété qui me permettait de définir le nom comme suit:

public virtual string ApplicationName
{
    get 
    {
        if (_applicationName == null) {  _applicationName = HttpRuntime.AppDomainAppId; }
        return _applicationName;
    }
    set { _applicationName = value; }
}

Ce que vous devrez probablement faire, c’est d’ajuster cela différemment et de définir le nom d’application non sur ErrorLog.Log(ex) mais sur une valeur extraite de web.config. Dans l'ensemble, c'est possible. La façon dont je l’ai fait a amélioré la méthode <=> afin que je puisse utiliser Elmah dispose d’un cadre appelable au-delà des applications Web. Avec le recul, j'aimerais plutôt utiliser l'approche app / web.config.

Une chose à garder à l’esprit lorsque vous modifiez le nom de l’application dans Elmah. Le gestionnaire http qui génère l'interface /elmah/default.aspx ne fonctionnera plus. J'essaie encore de trouver le temps de faire le tour de la question; Cependant, vous devrez peut-être envisager de créer une interface personnalisée lors de la mise en œuvre.

Autres conseils

Ceci peut maintenant être fait uniquement dans le balisage. Ajoutez simplement un attribut applicationName à l'élément errorLog de la section <elmah> du fichier web.config. Exemple:

<errorLog type="Elmah.SqlErrorLog, Elmah" 
    connectionStringName="connectionString" applicationName="myApp"  />

J'ai testé cela et cela fonctionne à la fois lors de la journalisation d'une exception et lors de la visualisation du journal via Elmah.axd.

Dans le cas de l'OP, on pourrait imaginer qu'il puisse également être défini par programme, mais je n'ai pas testé cela. Pour moi et j'imagine que pour la plupart des scénarios, l'approche par balises est suffisante.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top