mardi 13 octobre 2009

Comment écrire (simplement) dans les logs SharePoint WSS 3

Pour écrire dans les fichiers de log SharePoint, vous trouverez sur le web principalement deux façon de faire :

La classe PortalLog

Tout d’abord le plus simple, on peut utiliser la méthode 

PortalLog.LogString(string message, params object[] args);

Cette méthode permet d’écrire facilement une ligne de texte dans les logs, mais malheureusement elle n’est disponible que pour MOSS 2007 et pas sur WSS 3.0. Pour l’utiliser il faut référencer l’assembly: Microsoft.Office.Server.dll

TraceProvider

Soit via un TraceProvider dont Microsoft a donnée un exemple d’implémentation sur le site MSDN: http://msdn.microsoft.com/hi-in/library/aa979522(en-us).aspx

Ce qui permet de disposer d’une méthode:

WriteTrace(uint tag, TraceSeverity level, Guid correlationGuid, string exeName, string productName, string categoryName, string message)

Cela semble prometteur mais personnellement je n’ai pas réussi à le faire fonctionner, et par ailleurs certains champs (notament “categoryName”) ne sont pas libre.


Reflection


La dernière alternative que je vous propose est d’utiliser de la reflection afin d’accéder aux méthodes de la classe Microsoft.SharePoint.Diagnostrics qui se trouve dans l’assembly Microsoft.SharePoint.dll et donc disponible dans WSS 3.


Voici le code:


static void WSSLog(string message)
        {
            try
            {               
                Type ULSType = Type.GetType("Microsoft.SharePoint.Diagnostics.ULS, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c");
                MethodInfo logMethod = ULSType.GetMethods(BindingFlags.Static | BindingFlags.Public)[19];

                logMethod.Invoke(null, new object[] { (uint)0x38317674, (uint)0x5ec, 20, "%s", new object[] { message } });
            }
            catch
            {
                // Logger should not throw exception
            }
        }

Aucun commentaire:

Enregistrer un commentaire