2009-06-23 10 views
18

Nous avons une application ASP .Net dans lequel nous utilisons Log4Net pour vous connecter détails dans l'application - rien de nouveau - et les noms de fichiers journaux de roulement sont dans le format habituel de:Nom de fichier personnalisé dans un fichier journal Log4Net tournant?

rolling-log.txt 
rolling-log.txt.1 
rolling-log.txt.2 etc. 

A chaque utilisateur de l'application ajoute Dans le fichier journal, le fichier journal peut être difficile à lire pour le cas d'un utilisateur spécifique. Nous souhaitons donc modifier le fichier de configuration pour enregistrer les détails du journal de l'utilisateur, chaque fichier étant écrit dans un fichier spécifique, par exemple Où est l'identifiant d'application unique de chaque utilisateur, composé d'un nombre à cinq chiffres, par ex., Un numéro à cinq chiffres;

12345rolling-log.txt 

Des idées sur la meilleure façon d'implémenter cela, en supposant que c'est possible?

Vive

Brett

Répondre

14

chercher des propriétés de contexte log4net ...

dans votre code:

log4net.GlobalContext.Properties["id"] = "12345"; 

puis

log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo("configPath")); 

dans le fichier de configuration log4net:

<file type="log4net.Util.PatternString" 
      value="%property{id}rolling-log.txt" /> 
1

Je ne pense pas que le fichier journal par l'utilisateur est possible, mais vous pouvez écrire couche personnalisée entre log4net et votre application qui prepends ID utilisateur avant d'écrire pour vous connecter.

1

Vous pouvez écrire une mise en page personnalisée en héritant de XmlLayoutBase.

8

Je crois que le fichier de configuration Log4Net prend en charge les variables d'environnement (par exemple USERNAME) ainsi que les modèles personnalisables qui devraient vous donner ce que vous voulez.

Regardez "PatternString pour la configuration basée sur un modèle" dans the Log4Net V1.2.10 release notes.

+0

+1 Ceci est la façon de le faire. –

34
<file type="log4net.Util.PatternString"> 
    <conversionPattern value="C:\Logs\log-%date{ yyyy.MM.dd.HH.mm.ss}-[%processid].log" /> 
</file> 

from here

+0

très utile, voté. – Roylee

+1

N.B. Remplacez l'élément '' par ce qui précède. –

+0

merci beaucoup, pour vous – Zaragon

Questions connexes