Existe-t-il des plages d'ID d'événement valides que les applications personnalisées devraient utiliser lors de la connexion à Windows EventLog? Ou je peux utiliser n'importe quel ID d'événement de mon choix (1,2,3,4 ....). P.S, je développe en C # .NET.
EventIds sont spécifiques à chaque application, vous pouvez donc utiliser toutes les plages de votre choix. Assurez-vous simplement de documenter ce que vous avez utilisé et où afin de ne pas utiliser un identifiant deux fois ou pour faciliter le débogage.
Mais gardez à l'esprit ...
Comme lorsque Henry Ford disait "tu peux avoir n'importe quelle couleur tant que c'est noir" - tu peux aussi utiliser la plage de ton choix tant que cette plage se situe entre 0 et 65535.
Effectivement, il appartient à l’auteur de définir et de suivre les identifiants d’événement qu’ils utilisent et leur signification.
Voici une référence: http://msdn.Microsoft.com/en-us/library/e29k5ebc.aspx - La partie relative à la non-rédaction de messages avec des adresses IPv6 (en raison de% caractère) dans le journal des événements. Je parie que vous pouvez utiliser un paramètre pour contourner ce problème.
Les bits hi de l'ID sont réservés au test, au débogage et à d'autres indicateurs utilisés pour le développement. Les bits utilisables sont:
0x0000 - 0xffff
Voir: Structure du message d'événement
Les bits supérieurs doivent être évités, mais toutes les valeurs des bits inférieurs sont disponibles si vous créez une source personnalisée. Si vous utilisez un système ou une source préexistante, vous vous heurtez et obtenez probablement le mauvais message. Les messages sont extraits du fichier de messages source enregistré DLL. Un fichier de message personnalisé peut être créé à l'aide du compilateur de fichier de message du SDK.
Edit1: J'ai testé cela et ce n'est pas vrai que eventID est 32bits. Ce n'est que 16 bits.
eventId est Int32, de -2 147 483 648 à 2 147 483 647
Méthode EventLog.WriteEntry (String, String, EventLogEntryType, Int32)
public static void WriteEntry(
string source,
string message,
EventLogEntryType type,
int eventID
)
Techniquement, vous pouvez utiliser toutes les valeurs comprises entre 1 - 65536 pour cela.
Mais si vous êtes quelqu'un qui écrit des tonnes de journaux prolixes comme moi, vous aurez du mal à relier un tas d'entrées ensemble, alors je suggèrerais de générer une valeur aléatoire unique chaque fois que le code s'exécutera avec cela, vous pourrez identifier les événements. Même la meilleure idée serait de créer votre propre journal et source pour l'utiliser au lieu de tout écrire dans le journal des applications. like
Random rnd = new Random();
EventId = rnd.Next(0, 65535);