6
votes

Journalisation avec l'appendeur de sauvegarde

existe-t-il un cadre de journalisation .NET qui permettent de changer d'appendeur si quelque chose ne va pas avec celui en vigueur. En fait ce que je veux, c'est suit:

Si j'utilise l'appendeur de base de données et lorsque quelque chose ne va pas avec la base de données (E.G. Server diminue, perdre la puissance ...) Je veux passer au deuxième appendeur (par exemple, qui vous connectez).

Cette capacité a-t-elle l'une des opérations suivantes: log4net, nlog, bibliothèque d'entreprise? Je cherchais ça mais pas de chance.


2 commentaires

Nlog vous permet d'écrire votre propre cible. Vous pouvez ensuite ajouter vos besoins. nlog-project.org/wiki/... (en dernier recours peut-être: )


J'ai trouvé une solution, s'il vous plaît voir ma réponse ci-dessous.


5 Réponses :


1
votes

Oui, log4net vous permet de disposer de plusieurs destinations de journal, telles que: fichier journal, email, Base de données et visualiseur d'événements.

Vous pouvez modifier la destination dans le fichier de configuration de l'application. Vous pouvez également exécuter plus d'un en même temps - par ex. Connectez-vous à la visionneuse et à la base de données d'événements.

Je recommande toujours d'avoir deux destinations de journal par défaut - au cas où l'un des eux a un problème.


3 commentaires

Je sais que, mais existe-t-il un moyen de changer d'appendeur de la base de données vers un fichier au moment de l'exécution (à partir du code) si nous avons obtenu une exception lors de la connexion à DB?


Pas via log4net itésf, mais vous pouvez facilement mettre à jour le web.config dans votre code. Comme une destination de journal pourraient avoir des problèmes, c'est toujours une bonne idée d'avoir deux de toute façon. Ce qui signifierait que vous n'avez pas besoin de vous inquiéter de la rédaction de code qui met à jour le web.config.


J'ai trouvé une solution, s'il vous plaît voir ma réponse ci-dessous.



1
votes

Nlog vous permet de vous connecter à plusieurs cibles via un fichier de configuration. N'oubliez pas de définir ignorfailures à true pour vous assurer que toute défaillance d'installation / désinstallation est ignorée: xxx

voir Cible de base de données dans la documentation NLOG pour plus d'informations

Modifier: Vous pouvez également créer une cible personnalisée Afin d'y parvenir dans Code: xxx

et utilisez-le avec: xxx

voir Cette page Pour plus d'informations.


3 commentaires

Je sais que, mais existe-t-il un moyen de changer d'appendeur de la base de données vers un fichier au moment de l'exécution (à partir du code) si nous avons obtenu une exception lors de la connexion à DB?


Je créerais une cible personnalisée pour y parvenir. Je vais mettre à jour ma réponse maintenant.


J'ai trouvé une solution, s'il vous plaît voir ma réponse ci-dessous.



2
votes

Autant que je sache que Log4Net ne prend actuellement pas en charge les appendeurs de sauvegarde, il existe (ou était?) Un problème ouvert dans le carnet de fonctionnalités Log4Net. Mais je pense que le projet appelé FallbackAppender fait exactement ce dont vous avez besoin.


2 commentaires

Vous avez raison, c'est exactement dont j'ai besoin, mais quand je l'ai essayé et testé, il semble que cela ne fonctionne pas comme prévu. par exemple. Si vous utilisez deux fichiers-dépendants et que l'on échoue, la prochaine fois que celui-ci est récupéré, il essaie de l'utiliser à nouveau, mais échoue. Le même problème se produit avec la base de données. Peut-être que je ne l'ai pas configuré correctement, mais cela ne fonctionne certainement pas comme prévu. Merci pour votre dîne.


J'ai trouvé une solution, s'il vous plaît voir ma réponse ci-dessous.



3
votes

Pour complétude: la bibliothèque d'entreprise prend en charge une source spéciale d'erreur configurable dans laquelle vous pouvez définir un "appendice" pour enregistrer les messages qui ont une erreur erronée. Une fois configuré cela, cela fonctionne simplement sans programmation.

Le seul inconvénient est qu'il enregistrera réellement l'exception survenue avec les détails de la saisie de journal dans un format spécifique qui ne peut pas être changé, il n'est donc pas flexible. C'est bon pour le dépannage, mais ce n'est peut-être pas idéal si vous souhaitez extraire des messages de journal erronés et les importer dans la destination de journalisation d'origine (bien que le format soit connu de sorte qu'il soit possible d'analyser).


1 commentaires

J'ai trouvé une solution, s'il vous plaît voir ma réponse ci-dessous.



2
votes

Parce que Log4NetContribute FallbackAppender ne fonctionne pas comme prévu que j'ai apporté une recherche approfondie et constaté que cette capacité a Nlog. Je l'ai testé et cela fonctionne comme un charme;) Voici un exemple:

[app.config] p> xxx pré>

[code] p>

Logger _logger = LogManager.GetCurrentClassLogger();
_logger.Info("Neki Info");
_logger.Debug("Neki debug");
_logger.Error("Neki  ERROR");
_logger.Error("Pa jos neki");


0 commentaires