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