Nome file personalizzato in un file di log Log4Net a rotazione?
Domanda
Abbiamo un'applicazione ASP .Net in base alla quale utilizziamo Log4Net per registrare i dettagli all'interno dell'app - niente di nuovo lì - ei nomi dei file di log di rotolamento sono nel solito formato di:
rolling-log.txt
rolling-log.txt.1
rolling-log.txt.2 etc.
Ogni utente dell'applicazione aggiunge al file di registro, il file di registro può essere difficile da leggere per il caso di un utente specifico e quindi, vorremmo modificare il file di configurazione in qualche modo per registrare singolarmente i dettagli del registro dell'utente, ciascuno scrivendo a un file specifico, ad esempio
<applicationId>rolling-log.txt
<applicationId>rolling-log.txt.1
<applicationId>rolling-log.txt.2
etc.
dove si trova l'ID applicazione univoco di ciascun utente, composto da un numero di cinque cifre, ad es.
12345rolling-log.txt
Qualche idea sul modo migliore per implementarlo, supponendo che sia possibile?
Saluti
Brett
Soluzione
cerca le Proprietà del contesto log4net ...
nel tuo codice:
log4net.GlobalContext.Properties["id"] = "12345";
poi
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo("configPath"));
nel file di configurazione log4net:
<file type="log4net.Util.PatternString"
value="%property{id}rolling-log.txt" />
Altri suggerimenti
<file type="log4net.Util.PatternString">
<conversionPattern value="C:\Logs\log-%date{ yyyy.MM.dd.HH.mm.ss}-[%processid].log" />
</file>
Credo che il file di configurazione Log4Net supporti le variabili di ambiente (ad es. USERNAME), nonché i modelli personalizzabili che dovrebbero darti ciò che desideri.
Guarda " PatternString per la configurazione basata su pattern " in le note di rilascio di Log4Net V1.2.10 .
Non credo che il file di registro per utente sia possibile, ma è possibile scrivere un livello personalizzato tra log4net e l'applicazione che antepone l'id utente prima di scrivere nel registro.
Puoi scrivere un layout personalizzato ereditando da XmlLayoutBase.
Verifica RollingPatternFileAppender, proprio come il rollingfileappender più il nome del file dinamico http://mysite.verizon.net/vze14bhji