9
votes

Peut écrire sur logfiles sérieusement ralentir votre application?

J'utilise log4net pour écrire des journaux dans des fichiers. Cette Serioulsy peut-elle ralentir mon application? Je sais que cela dépend de combien j'écris, mais disons que des centaines de journaux peuvent être écrits par seconde.


1 commentaires

GARANTI, il affecte la performance de votre application. Je saurais que la journalisation du fichier log4net a apporté mon application à un crawl. J'étais sous le dossier de l'hypothèse de journalisation s'est passé dans un fil séparé pour éviter d'affecter l'application - mais Nope! J'ai eu la meilleure chance de se connecter à une API asynchrone comme des idées de l'application. Si vous vouliez vraiment vous connecter à un fichier, vous pourriez essayer de faire ce que ce gars a fait de retour en 2013 à l'aide de tâche ou de threadpool: Ben-Morris.com/...


5 Réponses :


5
votes

Bien sûr, il peut .

Comme vous l'avez déjà dit, cela dépend de la façon dont vous l'écrivez.

Si vous vous connectez à un disque dur différent, les choses seront meilleures. Si vous vous enregistrez via un moyen de transport basé sur un message, vous allez probablement aller.


0 commentaires

7
votes

Il ralentira votre application (évidemment) mais cela dépend beaucoup de votre demande si le ralentissement est qualifié de «sérieux». Je pense que vous devez le laisser courir puis décider si la performance est acceptable ...


0 commentaires

1
votes

Je ne suis pas sûr de la lenteur de l'application.

Mais je peux dire que si vous écrivez des centaines de journaux par seconde et que cela aussi dans un même fichier, assurez-vous que la synchronisation du fil est en place parce que vous ne voulez pas de planter lorsque plusieurs threads tentent d'accéder au même fichier.


0 commentaires

3
votes

oui ça peut. Il est crucial de considérer la configuration, de sorte que vous puissiez le configurer pour ne pas écrire autant de journal, puis ne pas avoir beaucoup de frais généraux.

EG. P>

if (logger.IsDebugEnabled)
{
  logger.DebugFormat("log: {0}", myObject.ToString());
}


0 commentaires

1
votes

"lent" n'est pas une propriété binaire. Il est relatif à ce que tu fais d'autre.

Si tout ce que vous faites prend 10 fois plus de temps de clou d'horloge en tant que journalisation, puis la journalisation l'augmentera par 10 % : (10/10 + 1/10 = 1.1)

Si autre chose que vous faites prend 1/9 autant de temps d'horloge murale en tant que journalisation, puis la journalisation augmentera de 10 fois : (1/1 + 9/1 = 10 )


0 commentaires