cs_zmaster
Messages postés9Date d'inscriptionlundi 1 avril 2002StatutMembreDernière intervention 6 décembre 2006
-
6 déc. 2006 à 09:10
cs_zmaster
Messages postés9Date d'inscriptionlundi 1 avril 2002StatutMembreDernière intervention 6 décembre 2006
-
6 déc. 2006 à 11:40
Salut !
Je dois, dans le cadre d'une politique de sécurité dans mon entreprise, récupérer les journaux d'évenements de mes serveurs, puis les stocker a quelque part pour ensuite générer des statistiques, des rapports etc...
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 6 déc. 2006 à 10:59
Hello,
J'ai jeté un coup d'oeil à ton code, et j'ai juste deux ou trois conseils à te donner :
Les types énumérés ne sont pas à utiliser comme ça :
e.EntryType.ToString().Equals("Error")
mais plutôt comme ça :
e.EntryType = = EventLogEntryType.Error
Si tu dois formatter une date, ne fait si possible pas comme ça :
string timestamp = e.TimeGenerated.Year.ToString() + "-" + e.TimeGenerated.Month.ToString() + "-" + e.TimeGenerated.Day.ToString() + "-" + e.TimeGenerated.Hour.ToString() + "-" + e.TimeGenerated.Minute.ToString() + "-" + e.TimeGenerated.Second.ToString();
timestamp .ToString() est inutile, puisque timestamp est déjà un string.
Il est à mon avis inutile de remplir un ArrayList avec des éléments, si tu peux directement faire ta requête pour les mettre dans la DB.
pour ta base de donnée, j'espère que tu utilises bien les types Datetime pour timestamp et long pour instanceid non des string.
Un conseil encore, utilise des paramètre pour faire tes requêtes SQL, tu seras nettement moins embêté par des problèmes de culture, de format, ou simplement d'apostrophe dans un string.
La première partie peut être sortie de la boucle, comme elle ne change pas.
Pour rendre le code encore un peu plus propre, tu peut déclarer des constantes pour tes paramètres ("@...")
Je n'ai pas testé le code, mais en principe, il devrait fonctionner sans trop de modifications.
cs_zmaster
Messages postés9Date d'inscriptionlundi 1 avril 2002StatutMembreDernière intervention 6 décembre 2006 6 déc. 2006 à 11:40
Merci beaucoup pour tes conseils, je tenterai de les appliquer dès que j'ai quelques minutes pour toucher au code.
Pour la requète SQL directement dans la boucle, je l'avais fait comme ça au début, mais il attend qu'a chaque fois l'insertion soit finie pour lire l'évenement suivant.
J'ai pas remarqué de grande différence au niveau du temps d'exécution, mais je me suis dit qu'il vallait peut-être mieux ne pas mélanger la récupération des données des journaux, avec l'insertion dans la base de données.