[SharePoint 2010] Utilisation des Logs sous SharePoint

Vous avez peut être remarqué que pour pouvoir logger des actions d’une application SharePoint, c’est différent de l’ASP.NET classique.

Vous aurez très certainement une erreur d’accès: “Registry Access is not allowed” ou un problème avec les logs “Security”.

En fouillant un peu, j’ai trouvé une solution :

Ca ne suffit pas de créer une Source pour les logs directement dans la Webpart ou dans n’importe quel composant SharePoint.

      if (!EventLog.SourceExists("Customs Solutions"))
      {
          EventLog.CreateEventSource("Customs  Solutions", "Application");
      }

Ce code n’est pas faux mais il doit être mis au bon endroit,  c’est-à-dire à l’installation de la Feature.

public override void FeatureInstalled(SPFeatureReceiverProperties properties)
    {
        if(!EventLog.SourceExists("Customs Solutions"))
        {
            EventLog.CreateEventSource("Customs Solutions", "Application");
        }
        ;
    }

Une fois instancié, vous êtes sûr que la source existera et sera créée avec le plus haut privilège (à vérifier en production quand même que le compte avec lequel on déploie a assez de droits).

Mais ce n’est pas tout !

Il faut encore créer la fonction de log (différente également que d’habitude) :

public static void Write(string message)
    {
        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            EventLog.WriteEntry("Customs Solutions",
                                        message,
                                        EventLogEntryType.Information);
        });

    }

En effet, il faut utiliser un RunWithElevatedPrivileges pour pouvoir par la suite écrire dans le registre, cela permet d’exécuter la fonction avec les droits administrateur. Attention à bien l’utiliser car il ne faut pas casser l’héritage (d’où le delegate()).

Vous pouvez voir que le dernier paramètre permet de définir le type d’eventLog “EventLogEntryType.Information” (Information, Error, Warning) donc à vous de créer plusieurs fonctions ou d’adapter le code en fonction de ce que vous voulez logger.

Personnellement j’en ai fait deux, une pour le log en information, et une dans les “catch” pour les erreurs.

Voilà, vous savez maintenant comment logger vos actions sous SharePoint !

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :