9
votes

Nlog - Section d'en-tête génératrice pour un fichier journal

Je viens de chercher à expérimenter avec Nlog, et cela me survient que je voudrais pouvoir ajouter des informations d'en-tête au sommet d'un fichier journal tel que: xxx

après une certaine recherche J'ai été incapable de trouver quoi que ce soit dans la documentation en ligne existante ou les forums de code indiquant ce type de fonctionnalité. Est-ce possible? J'ai toujours déjà inclus ce genre d'informations dans les fichiers journaux et j'ai trouvé utile à de nombreuses occasions dans le passé, lors de la recherche d'informations sur des problèmes de production sur des sites clients. Certes, cette fonctionnalité a été construite sur mesure pour les solutions et non basée sur l'un des cadres de journalisation .net actuels.


0 commentaires

3 Réponses :


6
votes

Je ne suis pas au courant d'un moyen de le faire très facilement. Cela dit, tous les exemples que vous donnez sont disponibles (ou assez facilement disponibles avec un code personnalisé) à ajouter à chaque message de journal. C'est-à-dire que chaque message enregistré peut être étiqueté avec nom exécutable, version de fichier, date de publication, ID utilisateur de Windows, etc. via la mise en page et layoutrendrenders.

Ceci n'est évidemment pas identique à la création d'un en-tête en haut du journal Fichier, il pourrait donc ne pas vous être utile. P>

D'autre part, vous pouvez utiliser une technique mentionnée dans la réponse de PAT Dans ce message pour associer plusieurs rendriers de mise en page avec la même cible. Vous pouvez définir une mise en page contenant les champs que vous souhaitez dans votre en-tête et définir le filtre dans la filtrageWrapper pour appliquer uniquement cette mise en page pour le premier message d'une session (ou vous pouvez utiliser une autre technique qu'elle est ajoutée au fichier de sortie. Une seule fois). P>

Utiliser son fichier nlog.config, voici une façon de réaliser ce que vous voulez. Notez que je n'ai pas essayé cela, donc je ne sais pas si ce fichier de configuration est valide ou, si tel est le cas, si cela générera les résultats que vous souhaitez. P>

This is a TRACE - 2010-11-22 13:20:00.4131 | NLogTest.Form1 | Trace | Trace msg
This is a DEBUG - 2010-11-22 13:20:00.4131 | NLogTest.Form1 | Debug | Debug msg
This is an INFO - 2010-11-22 13:20:00.4131 | NLogTest.Form1 | Info | Info msg
This is a WARN - 2010-11-22 13:20:00.4131 | NLogTest.Form1 | Warn | Warn msg
This is an ERROR - 2010-11-22 13:20:00.4131 | NLogTest.Form1 | Error | Error msg
This is a FATAL - 2010-11-22 13:20:00.4131 | NLogTest.Form1 | Fatal | Fatal msg


4 commentaires

Merci beaucoup Wageoghe, qui a travaillé un régal. Cependant, comme c'est toujours le cas, après avoir réussi à obtenir la fonctionnalité de base, j'ai maintenant besoin de toucher les choses :-) En gros, j'ai besoin d'avoir des mises en page différentes pour les différents niveaux de journalisation, comment rendez-vous la disposition conditionnelle du niveau sélectionné?


Que voulez-vous que les différentes mises en page ressemblent? Voulez-vous avoir des champs différents dans les mises en page pour différents niveaux de journalisation? En tout cas, vous pourriez probablement utiliser la technique que Pat montre dans le lien ci-dessus. Il définit une cible de fichier pour ses messages de journalisation "normaux" et définit une cible "Wrapper de filtre" pour utiliser une disposition différente pour les messages contenant une exception. Je vais essayer d'ajouter un exemple de quelque chose qui pourrait vous aider.


Utilisation de la technique suggérée, pour ce qui suit: Je reçois l'erreur suivante dans le fichier de configuration: "L'attribut" Writeto "est invalide ..." pour


N'hésitez pas à accepter la réponse et / ou de le voter si cela répondit à votre question



19
votes

Il suffit de trébucher sur ceci tout en cherchant à reproduire une en-tête / pied de page dans un journal de mes collègues créé avec Log4Net. J'ai trouvé cela à partir d'un projet open-source et je l'ai adapté comme un exemple interne. Je pense que cela devrait être simple à modifier pour vos besoins.

----------NLog Demo Starting---------

2013-03-01 16:40:19.5404|INFO|Project.Form1|Sample informational message
2013-03-01 16:40:19.5714|WARN|Project.Form1|Sample warning message
2013-03-01 16:40:19.5714|ERROR|Project.Form1|Sample error message
2013-03-01 16:40:19.5714|FATAL|Project.Form1|Sample fatal error message
----------NLog Demo Ending-----------


1 commentaires

Correction du lien. Merci.



2
votes

Vous pouvez générer une section d'en-tête / pied de page par "instance" (c'est-à-dire la première fois que l'application et la dernière fois que l'application écrit à n'importe quel fichier donné) à l'aide de la mise en page comme indiqué par la réponse précédente :

Plus de détails:


1 commentaires

Peut-être que nous pouvons fusionner votre réponse avec le précédent, car vous n'ajoutez que de nouveaux liens. Pourrait aussi pointer vers github.com/nlog/nlog/issues/2119 où quelqu'un demande Pour avoir l'en-tête et le pied de page chaque fois que l'application commence et s'arrête.