IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Sharepoint .NET Discussion :

SP2013 Loguer les erreurs dans les ULS


Sujet :

Développement Sharepoint .NET

  1. #1
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut SP2013 Loguer les erreurs dans les ULS
    Bonjour,

    Je code actuellement un Timer Job Sharepoint 2013.
    Je voudrais loguer les éventuelles erreurs que pourrait rencontrer mon Timer Job dans les ULS.
    J’ai trouvé la classe SPDiagnosticsService
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("Log de mon Timer Job", TraceSeverity.None, EventSeverity.Information), TraceSeverity.None, "Message de l'erreur", null);
    Mais ce code me renvoi une erreur "Paramètre non valide"

    Je ne comprend pas pourquoi. Je précise que mon Timer Job s’exécute au niveau WebApplication.

    Comment bien loguer ses erreurs dans Sharepoint, quelles sont les bonnes pratiques?

    Merci d'avance pour votre aide et votre retour d’expérience.

  2. #2
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    Bonjour,

    J'ai regardé les paramètres de votre méthode:

    SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("Log de mon Timer Job", TraceSeverity.None, EventSeverity.Information), TraceSeverity.None, "Message de l'erreur", null);
    De ce que je lis :
    - le premier paramètre n'est pas bon, il faut mettre 1036 (qui signifie log-moi-en-français)
    - concernant le deuxième, il me semble qu'il faut choisir une catégorie existante, "log de mon timer job" n'est pas un catégorie valide sauf si vous avez créé une catégorie "log de mon timer job". Les catégories possibles sont présents dans la centrale admin
    - concernant le dernier paramètre "null", il est inutile si tu n'as rien à mettre, ne le mets pas.
    Edit : premier param OK. j'ai lu trop rapidement

  3. #3
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Bonjour,

    voici une petite classe de logging qui vous sera surement utile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    using Microsoft.SharePoint.Administration;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace xxxxxxxxx
    {
        /// <summary>
        /// Used for logging into Uls in 2010
        /// </summary>
        public class ULSLog2013 : SPDiagnosticsServiceBase
        {
            public const string PRODUCT_NAME = "Votre produit";
            private static ULSLog2013 _Current;
     
            private ULSLog2013()
                : base(PRODUCT_NAME, SPFarm.Local)
            {
            }
     
            public static ULSLog2013 Current
            {
                get
                {
                    if (_Current == null)
                    {
                        _Current = new ULSLog2013();
                    }
                    return _Current;
                }
            }
     
            public static void Log(TraceSeverity traceSeverity, Exception ex)
            {
                SPDiagnosticsCategory category = ULSLog2013.Current.Areas[PRODUCT_NAME].Categories["Error"];
                ULSLog2013.Current.WriteTrace(0, category, TraceSeverity.High, ex.Message);
                ULSLog2013.Current.WriteTrace(0, category, TraceSeverity.High, ex.ToString());
            }
     
            public static void Log(TraceSeverity traceSeverity, string message, Exception ex)
            {
                SPDiagnosticsCategory category = ULSLog2013.Current.Areas[PRODUCT_NAME].Categories["Error"];
                ULSLog2013.Current.WriteTrace(0, category, TraceSeverity.High, ex.Message);
                ULSLog2013.Current.WriteTrace(0, category, TraceSeverity.High, ex.ToString());
            }
     
            public static void LogDebug(string message)
            {
                SPDiagnosticsCategory category = ULSLog2013.Current.Areas[PRODUCT_NAME].Categories["Debugging"];
                ULSLog2013.Current.WriteTrace(1, category, TraceSeverity.Verbose, message);
            }
     
            public static void LogError(Exception ex)
            {
                SPDiagnosticsCategory category = ULSLog2013.Current.Areas[PRODUCT_NAME].Categories["Error"];
                ULSLog2013.Current.WriteTrace(0, category, TraceSeverity.High, ex.Message);
                ULSLog2013.Current.WriteTrace(0, category, TraceSeverity.High, ex.ToString());
            }
     
            public static void LogError(Exception ex, string message)
            {
                SPDiagnosticsCategory category = ULSLog2013.Current.Areas[PRODUCT_NAME].Categories["Error"];
                ULSLog2013.Current.WriteTrace(0, category, TraceSeverity.High, message);
                ULSLog2013.Current.WriteTrace(0, category, TraceSeverity.High, ex.ToString());
            }
     
            public static void LogError(string message, string stackTrace)
            {
                SPDiagnosticsCategory category = ULSLog2013.Current.Areas[PRODUCT_NAME].Categories["Error"];
                ULSLog2013.Current.WriteTrace(0, category, TraceSeverity.High, message + "Stacktrace : " + stackTrace);
            }
     
            public static void LogMessage(string message)
            {
                SPDiagnosticsCategory category = ULSLog2013.Current.Areas[PRODUCT_NAME].Categories["Logging"];
                ULSLog2013.Current.WriteTrace(1, category, TraceSeverity.Verbose, message);
            }
     
            public static void LogWarning(string message)
            {
                SPDiagnosticsCategory category = ULSLog2013.Current.Areas[PRODUCT_NAME].Categories["Warning"];
                ULSLog2013.Current.WriteTrace(1, category, TraceSeverity.Medium, message);
            }
     
            protected override IEnumerable<SPDiagnosticsArea> ProvideAreas()
            {
                List<SPDiagnosticsArea> areas = new List<SPDiagnosticsArea>
                {
                    new SPDiagnosticsArea(PRODUCT_NAME, new List<SPDiagnosticsCategory>
                    {
                        new SPDiagnosticsCategory("Error", TraceSeverity.High, EventSeverity.Error),
                        new SPDiagnosticsCategory("Warning", TraceSeverity.Medium, EventSeverity.Warning),
                        new SPDiagnosticsCategory("Logging", TraceSeverity.Verbose, EventSeverity.Verbose),
                        new SPDiagnosticsCategory("Debugging", TraceSeverity.Verbose, EventSeverity.Verbose)
                    })
                };
                return areas;
            }
     
            private string MapTraceSeverity(TraceSeverity traceSeverity)
            {
                switch (traceSeverity)
                {
                    case TraceSeverity.High: return "Error";
     
                    case TraceSeverity.Medium: return "Warning";
     
                    default:
                    case TraceSeverity.Verbose:
                        return "Debugging";
                }
            }
        }
    }
    Un appel du genre dans vos méthodes fera l'affaire
    ULSLog2013.LogMessage("Mail ERROR: SendEmail error : " + ex.StackTrace);

    Vous retrouverez vos traces dans ULS que vous pourrez par exemple filtrer par Produit.

  4. #4
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut
    Bonjour,

    Merci pour ta réponse.
    @Lapinpanda: Je ne trouve pas les catégories disponible dans l’administration centrale.

    Peux tu m'indiquer où je peux les trouver?

  5. #5
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut
    Citation Envoyé par guitou12 Voir le message
    Bonjour,

    voici une petite classe de logging qui vous sera surement utile
    Merci pour cette classe, ca à l'air d'etre pas mal. je test ca de suite.

  6. #6
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut
    En fait le problème est plus sournois visiblement.
    j'ai commenté tt mon code metier, je n'ai plus que du log dans mes classes.
    J'utilise la classe de guitou.
    et j'ai tjs la meme erreur qu'au debut:
    L'exception System.ArgumentException n'a pas été gérée par le code utilisateur
    HResult=-2147024809
    Message=La valeur spécifiée n'est pas prise en charge pour le paramètre |0.
    Source=Microsoft.SharePoint
    StackTrace:
    à Microsoft.SharePoint.Administration.SPDiagnosticsServiceBase.WriteTrace(UInt32 id, SPDiagnosticsCategory category, TraceSeverity severity, String output, Object[] data)
    Microsoft.SharePoint.Administration.SPTimerJobInvokeInternal.Invoke(SPJobDefinition jd, Guid targetInstanceId, Boolean isTimerService, Int32& result)
    InnerException:

  7. #7
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    Bonjour,

    autre idée, le service "SharePoint Tracing Service" est-il démarré?

  8. #8
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Lapinpanda Voir le message
    autre idée, le service "SharePoint Tracing Service" est-il démarré?
    Pour compléter, ton compte de pool a-t'il les droits nécessaire pour logger (group AD) ?

  9. #9
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut
    Citation Envoyé par Lapinpanda Voir le message
    Bonjour,

    autre idée, le service "SharePoint Tracing Service" est-il démarré?
    Je cherche, mais je ne trouve pas comment vérifier cela. Peux tu m'indiquer où cette fonctionnalité s'active. Ce qu'il y a de sur c'est mon Sharepoint génère des logs.

  10. #10
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut
    Citation Envoyé par ludojojo Voir le message
    Pour compléter, ton compte de pool a-t'il les droits nécessaire pour logger (group AD) ?
    Heu là, je ne sais pas quoi regarder Peux tu m'en dire un peu plus?

  11. #11
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par jubourbon Voir le message
    Je cherche, mais je ne trouve pas comment vérifier cela. Peux tu m'indiquer où cette fonctionnalité s'active. Ce qu'il y a de sur c'est mon Sharepoint génère des logs.
    Pour cela il te suffit d'afficher la liste des services de Windows.
    WIN+R (lancer l'invite de commande exécuter) puis saisir services.msc
    Tu trouveras dans cette liste un service appelé "SharePoint Tracing Service".
    Citation Envoyé par jubourbon Voir le message
    Heu là, je ne sais pas quoi regarder Peux tu m'en dire un peu plus?
    Il te faut regarder dans ton active directory que le compte de pool (visible depuis IIS) et ton compte de log (celui associé à ton services) appartiennent bien au groupe "Performance Log Users".

Discussions similaires

  1. Catcher les erreurs et les afficher dans une jsp
    Par phenix1988 dans le forum Struts 1
    Réponses: 0
    Dernier message: 26/02/2014, 10h37
  2. Eclipse ne voit pas les erreurs dans les JSP
    Par celestin62 dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 03/01/2012, 15h34
  3. Comment voir les erreurs dans les scripts Ironpython?
    Par PomFritz dans le forum Sharpdevelop
    Réponses: 0
    Dernier message: 02/03/2011, 20h11
  4. Afficher des liens dans les erreurs vers les classes
    Par root76 dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 18/06/2009, 10h17
  5. [EXCEL 2003] gérer les erreur dans les formules
    Par aityahia dans le forum Excel
    Réponses: 2
    Dernier message: 15/05/2007, 10h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo