2010-01-20 14 views
1

J'essaie de voir lequel de ces appenders fonctionnerait mieux (plus le temps est court, mieux c'est).log4net: comparer adonetappender et rollingfileappender

RollingFileAppender ou ADONetAppender?

Quels sont les autres paramètres que je devrais considérer en choisissant un appender?

J'ai vu que mon WebServer "s'accroche" au fichier rollingfile. Puis-je définir quelque chose comme

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 

(référence: section FileAppender en log4net documentation) dans mon dossier de roulement appender afin que plusieurs applications/serveurs peuvent écrire dans le même fichier?

notre serveur DB est dans un lecteur SAN, mais les fichiers journaux serait écrit localement sur le disque dur (ou peut-être un lecteur SAN dans un proche avenir)

Répondre

2

Nous avons plus de chance d'utiliser le fichier de roulement appender . Nous avons remarqué que s'il y a un problème de réseau, l'appender ADO.NET arrête de se connecter. Par exemple, un redémarrage après l'installation du service pack chaque semaine tue votre enregistreur.

Gardez à l'esprit que signifie également garder vos journaux sur le même serveur si vous allez avec le fichier appender - http://ferventcoder.com/archive/2009/07/16/log4net-note-always-keep-your-logs-on-the-same-server.aspx

Je ne l'ai jamais vu le mécanisme de verrouillage minimal. Il semblerait que vous paierez des pénalités de performance si vous l'utilisez: http://logging.apache.org/log4net/release/sdk/log4net.Appender.FileAppender.MinimalLock.html

+0

perspective intéressante. Je pensais que la journalisation sur DB serait plus rapide et plus facile (étant donné que plusieurs applications se connecteraient au même récepteur) – ram

+0

Nous pensions la même chose. Si vous pouvez garder votre base de données sur le même serveur, c'est peut-être le chemin à parcourir. Nous ne conservons pas nos bases de données sur les mêmes serveurs que nos applications, ce n'est donc pas une option pour nous. – ferventcoder

0

J'utilise généralement RollingFileAppender sur un disque local - c'est robuste et rapide (si vous ne pouvez pas écrire sur un disque local, vous avez généralement un problème fatal).

L'écriture dans ADO.NET peut échouer, par exemple si la base de données de journalisation est mise hors ligne à des fins de sauvegarde pendant que votre application est en cours d'exécution.

J'éviterais également d'utiliser MinimalLock en raison de la surcharge de performance - à la place, j'ai un fichier journal séparé pour chaque application. Si vous avez parfois besoin de voir des données de consignation consolidées, vous pouvez fusionner les parties pertinentes des journaux ou simplement ouvrir les parties pertinentes côte à côte dans un visualiseur.

3

Si votre ADONetAppender perd la connexion, il va arrêter l'enregistrement, mais avec l'option

<reconnectonerror value="true" /> 

il va essayer de se reconnecter.