8
votes

Comment puis-je effacer le fichier journal log4net?

Je travaille avec log4net. Je souhaite ajouter un bouton dans mon interface graphique que lorsque l'utilisateur clique sur ce bouton, Le fichier journal sera effacé. Comment puis-je faire ça?

Merci beaucoup


0 commentaires

5 Réponses :


6
votes

Il n'est pas pris en charge "hors de la boîte" de log4net. Cependant, vous pouvez utiliser le RollingFileAppender et créer une classe / méthode manuelle pour nettoyer / supprimer le fichier journal.

Pour référence, log4net: définissez des fichiers de sauvegarde maximum Sur RollingFileAppender avec date de roulement P>

Une autre approche pour éviter que le fichier en cours de verrouillage consisterait à définir le niveau de verrouillage minimal sur le fichier journal via: p>

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


3 commentaires

Merci! Mais lorsque j'essaie de supprimer le fichier, je reçois une exception car le log4net attrape le fichier. Comment puis-je libérer le fichier journal du log4net?


Vous pouvez utiliser la méthode CloseFile () avant d'appeler Supprimer.


Je suppose que c'est une question distincte mais que darek a suggéré. Faites-nous savoir comment vous allez et n'oubliez pas de marquer comme répondu si cela fonctionne pour vous.



10
votes

J'ai eu cette question aussi.

Vous en avez besoin dans votre configuration: xxx


4 commentaires

Exactement ce que je cherchais.


Parfait! Simple, j'aime ça


Je soupçonne que cela vient avec un coût, peut-être que quelqu'un peut commenter ici. Pour que cela fonctionne, log4net ferme probablement le fichier et libère la poignée de fichier. Il s'agit d'une opération coûteuse car la prochaine écriture nécessitera une nouvelle poignée de fichier et d'ouvrir le fichier. Bien que cela puisse voir «parfait», cela provoque probablement un coup de performance.


Quelqu'un a élaboré ci-dessous (j'ai vu comme je lisais des réponses supplémentaires). Au moins, le commentaire ici alertera d'autres personnes qui peuvent ne pas prendre le temps de lire ce fil ...



2
votes

merci gars Je réussis à effacer le journal. Dans le bloc d'appender du fichier de configuration du journal, j'ai ajouté que la ligne: xxx

Le code qui efface le fichier journal est le suivant: xxx

< fort> merci tous


1 commentaires

Voir ma réponse. Je crois que c'était la direction que je t'ai pointée. Heureux que tu l'as eu trié.



5
votes

Si vous ne voulez pas subir les conséquences de la performance d'avoir une serrure minimale (voir Réponse ), alors vous Peut temporairement configurer les annexes pour utiliser un verrouillage minimal, supprimer les fichiers, puis apporter le comportement par défaut.

exemple lorsque vous utilisez uniquement RollingFileAppenders: P>

// Release the lock on the log4net log files
var appenders = log4net.LogManager.GetRepository().GetAppenders();
foreach (var appender in appenders)
{
    var rollingFileAppender = appender as log4net.Appender.RollingFileAppender;
    if (rollingFileAppender != null)
    {
        rollingFileAppender.ImmediateFlush = true;
        rollingFileAppender.LockingModel = new log4net.Appender.FileAppender.MinimalLock();
        rollingFileAppender.ActivateOptions();
    }
}


0 commentaires

-1
votes

Utilisez simplement la commande xxx

au début de l'application.


0 commentaires