4 votes

Est-il possible de configurer Serilog pour tronquer (c'est-à-dire vider) le fichier journal pour chaque nouveau processus ?

En passant de nlog à serilog, j'aimerais que mon application de bureau .NET framework réutilise un fichier journal portant un nom statique à chaque fois que je l'exécute, mais qu'il efface le contenu du fichier à chaque nouveau processus. Est-il possible de configurer serilog de cette façon ?

C'est une question similaire, mais ce n'est pas tout à fait la même chose. Dans la question liée, l'utilisateur utilise un nouveau fichier journal à chaque fois avec un nom de fichier unique. Dans mon cas, je veux utiliser le même nom de fichier journal à chaque fois.

3voto

Caio Proiete Points 524

Ce n'est pas quelque chose que Serilog peut faire pour vous à l'heure actuelle.

Serilog.Sinks.File est configuré en dur pour ouvrir le fichier avec FileMode.Append donc si le fichier existe déjà, il ajoutera toujours le contenu à la fin du fichier.

FileLifecycleHooks vous permet d'intercepter quand le fichier est ouvert, ce qui vous donne l'opportunité de supprimer le contenu du fichier (en appelant SetLength(0) sur le flux), mais malheureusement l'implémentation du flux utilisée par Serilog.Sinks.File (WriteCountingStream) ne prend pas en charge SetLength.

Le mieux est de simplement tronquer ou supprimer le fichier journal vous-même au démarrage de l'application, et laisser Serilog en créer un nouveau.

par exemple

// Assurez-vous que le fichier journal est vide 
using (var fs = File.OpenWrite("mylog.log")) { fs.SetLength(0); }

// ... Configurez le pipeline Serilog

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X