Un objet FileTarget dans Nlog possède une propriété (BOOL) appelée "KeepfileOpen". Par défaut, cette propriété est définie sur FALSE, ce qui signifie que chaque événement de journal ouvrira le fichier, écrire dans le fichier et fermer le fichier. P>
Le coup de performance est énorme, donc j'ai spécifié "KeepfileOpen" à true, au lieu de faux, ce qui signifie que le fichier ne sera ouvert qu'une seule fois. P>
Est-ce que quelqu'un a une idée (ou savez-vous simplement) pourquoi cette propriété est définie par défaut sur "False", en garantissant une énorme performance sur la journalisation? P>
Y a-t-il des scénarios où la définition de cette propriété sur True peut causer des problèmes (ce qui permettrait donc de la défaut à "faux"). P>
Merci! P>
Mesures de performance pour la mise en page de base, écrire des événements 100K à l'enregistreur: P>
3 Réponses :
J'essaierais de leur envoyer un email et de les poser. Je ne peux pas comprendre une raison pour laquelle cette option est fausse par défaut. p>
Je dirais que la fermeture du fichier est le comportement attendu. Si vous essayez d'accéder au fichier à partir d'un autre processus ou de la supprimer dans le système de fichiers tandis que le processus Nlog est en vie, cela conduirait à ces erreurs de système gênantes disant que certains processus contiennent le fichier, etc. P>
Si le temps d'ouverture d'un fichier est trop long pour vous, essayez d'utiliser l'ASYNCWRAPPER et vous obtiendrez un comportement de feu et d'oublier. P>
Par conséquent, je pense que la valeur par défaut est OK. P>
La valeur par défaut 'FALSE' n'a aucun sens. Le comportement attendu est rapide et raisonnable. P>
et KeepfileOpen ne doit jamais contenir le fichier, car il existe un drapeau filtream code> appelé
fileshare.readwewrite code>. p>.