2009-09-24 7 views
1

J'ai besoin de modifier le programme existant qui fait une erreur de journalisation en écrivant à un fichier d'accès et il utilise effectivement dll log4net (comme nous l'avons découvert en vérifiant les dll via l'éditeur hexadécimal) donc dans l'idée je vais devoir recompiler la DLL modifiée avec l'original que ce programme utilise. Le besoin est assez simple, pour certaines erreurs qui sont écrites dans le fichier d'accès, le système devrait automatiquement avertir l'administrateur en lui envoyant un email.log4net et mailing

Quelles parties du projet et de la documentation dois-je examiner? Je suis assez perdu en tant que personne qui est très nouvelle sur la plate-forme .net ainsi que sur log4net.

EDIT: Il semble que le fichier de configuration de log4net soit incorporé donc pas moyen d'accéder directement à la configuration. Il semblerait que j'aurai besoin d'un autre moyen de résoudre ce problème. Cordialement

Répondre

5

Vous n'avez probablement pas besoin de changer les DLL du tout. Votre configuration log4net se trouve probablement dans le fichier App.config ou dans un fichier de configuration distinct comme log4net.xml.

Vous pouvez configurer des notifications par courrier électronique pour certains types d'erreurs en utilisant strictement le fichier de configuration.

Il existe un exemple sur le configuration examples page, il suffit de rechercher SmtpAppender. Si vous avez besoin de contrôler quels messages sont envoyés à l'e-mail, vous pouvez consulter les sections du configuration manual sur Loggers et filtres.

1

Si vous avez le code source du programme, il est plutôt simple de passer d'une configuration codée en dur au fichier de configuration.

Si vous avez pas accès au code source, j'utiliser DateTime lastAccessTime = File.GetLastAccessTime(@"c:\file.txt"); ou DateTime lastWriteTime = File.GetLastWriteTime(@"c:\file.txt"); pour déterminer l'accès aux fichiers avec un second programme et toujours utiliser log4net pour envoyer les e-mails. Essayer de modifier le log4net.dll est beaucoup plus difficile et non recommandé par mon pov.

1

Vous avez écrit

Il semble que le fichier de configuration de log4net est intégré Je suppose que, vous avez quelques options:

Si vous avez le code source du programme original, faire ne pas incorporer le fichier Log4Net et le changer selon les suggestions de Don Kirkby (ajouter un SmtpAppender).

Si vous n'avez pas le code source mais que vous êtes légalement autorisé à le faire, vous pouvez désassembler le programme, modifier la ressource intégrée (ajouter un SmtpAppender) et le remettre en place (par exemple: csc.exe /out:main.exe /target:exe /resource:main.exe.config main.cs). Si vous ne disposez pas du code source et que vous n'êtes pas autorisé à procéder à une rétro-ingénierie, vous pouvez modifier la configuration de log4net et charger un autre fichier de configuration à la place de celui intégré. Pour ce faire, je suppose que ce XmlConfigurator Class devrait être modifié. Si votre assemblage d'origine a été construit à partir d'une version spécifique de log4net, vous pouvez ajouter un assembly redirect afin que votre fichier log4net.dll soit utilisé à la place. Après tout, vous devez configurer un SmtpAppender comme suggéré précédemment.