0
votes

C # Comment enregistrer le fichier dans une DLL?

Je développe une DLL et je veux enregistrer certaines données qu'il génère.

Je voulais utiliser "log4net", mais j'ai trouvé le problème que dans une DLL, je n'ai pas de fichier "app.config" où je peux écrire le code XML, donc je ne sais pas comment implémenter cela (Je suis nouveau dans cette affaire).

J'ai lu sur "singleton" mais j'ai vu qu'il est préférable d'éviter cela puisqu'il a des problèmes (c'est-à-dire cacher une certaine visibilité du code, des problèmes avec des tests unitaires, ...).

Donc, ma question est la suivante: comment et quelle est la meilleure façon de créer un fichier journal pour les données générées par ma DLL?


3 commentaires

Lorsque vous créez une classe de classe ou une DLL, vous n'avez pas l'app.config par défaut dans votre projet, mais vous pouvez l'ajouter. Si vous utilisez VS, cliquez avec le bouton droit de la souris sur le projet, sélectionnez Ajouter -> Nouvel élément et tapez configuration dans la zone de recherche. Un fichier de configuration sera ajouté au projet


Vous ne devriez pas vous connecter dans la DLL. La journalisation doit être le travail du programmeur en utilisant votre DLL. Si chaque DLL se connecte, cela crée un anti-schéma de journalisation incontrôlable. | Si c'est une chose importante, vous devriez vous lancer une exception. Si ce n'est pas important, vous pouvez fournir un événement que l'utilisateur peut s'inscrire. Ou ce n'est vraiment pas si important que cela ait besoin de la journalisation. | Lorsque vous courez une DLL, vous avez généralement un projet séparé qui travaille avec la DLL pour avoir débogué.


La manipulation des exceptions est une pierre d'animal de mienne. Il est intimidant thématique, encore plus si vous devez envisager de jeter des exceptions vous-même. Mais il y a deux articles que je liens souvent et que je pense peut vraiment vous aider: blogs.msdn.microsoft.com/ericlippert/2008/09/10/... | CodeProject.com/articles/9538/...


4 Réponses :


0
votes

Le fichier de configuration sera connecté au module d'exécution. Ce sera dans le fichier EXE s'il s'agit d'une application de console, ou dans web.config en cas d'application Web.


0 commentaires

0
votes

Pour enregistrer le flux d'applications dans la DLL, Il suffit de créer une classe qui crée et accédez au fichier texte de journal.

Dans cette classe, déclarez l'objet LoggingClass Loggockaject; puis utilisez cette instance pour accéder au fichier journal.

En créant un objet pour cela, vous pouvez utiliser, xxx

maintenant, vous pouvez simplement appeler cette méthode pour obtenir la même instance qui accède au fichier journal pour écrire le journal. Dans cet exemple, log4net n'est pas utilisé mais fonctionne bien pour la journalisation.


0 commentaires

1
votes

Une DLL - une bibliothèque de classe - ne doit jamais être enregistrée en soi. Même ceux qui sont là pour la sortie - comme la console contenant une console ou même un code d'enregistreur - ne doivent jamais décider d'écrire leur propre logfile. Travaux de journalisation - Tous les travaux de sortie - qui ne sont pas contrôlables ni entièrement contrôlés par le programmeur à l'aide de votre DLL, cela va simplement être un comportement vexant. Et vous ne devriez jamais écrire quelque chose avec un comportement vexant.

La journalisation est le travail de la personne à l'aide de votre code , non de votre code. Si vous écrivez une bibliothèque ou vraiment quelque chose d'autre qui n'a généralement aucune sortie (comme un service Windows), il est habituel d'avoir un projet d'emballage pour le débogage et les tests.

S'il est assez important, il protège une exception. Si ce n'est pas assez important pour une exception - il n'est pas suffisamment important du tout. C'est un défi décourageant d'écrire une bonne manipulation des exceptions, ce n'est pas un bon code de lancement d'exception. Mais il y a deux articles sur la Mater que je lie très souvent. Et je pense vraiment que vous vous aiderait à vous mettre sur les bons chemins:


0 commentaires

0
votes

Vous ne dites pas qui vous vous attendez à utiliser votre DLL.

S'il sera utilisé par beaucoup d'autres personnes et si la journalisation est utile à elles, peut ne pas vouloir être forcée d'utiliser Log4Net ou que cela peut causer des problèmes s'ils veulent utiliser une version différente de Log4Net que vous ne l'êtes utilisant.

J'ai vu plusieurs dlls qui utilisent commun.logging Pour éviter ce problème, ce qui permet aux consommateurs d'utiliser le package de journalisation qu'ils souhaitent.

Ayant dit que, voir Configurer la journalisation log4net dans la DLL pour une autre solution possible.


0 commentaires