2009-06-23 17 views
18

Abbiamo un'applicazione ASP .Net per cui usiamo Log4Net per registrare i dettagli all'interno dell'applicazione - niente di nuovo lì - e i nomi dei file di log di rotolamento sono nel consueto formato:Nome file personalizzato in un file di registro Log4Net progressivo?

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

A ciascun utente dell'applicazione aggiunge al file di log, il file di registro può essere difficile da leggere per un caso specifico dell'utente e quindi, vorremmo modificare il file di configurazione in qualche modo per registrare i dettagli del registro dell'utente individualmente, ogni scrittura su un file specifico, ad es.

<applicationId>rolling-log.txt 
<applicationId>rolling-log.txt.1 
<applicationId>rolling-log.txt.2 
etc. 

dove è l'ID di applicazione univoco di ciascun utente, costituito da un numero di cinque cifre, ad es.

12345rolling-log.txt 

Tutte le idee sul modo migliore per attuare questo, partendo dal presupposto che è possibile?

Acclamazioni

Brett

risposta

14

cercare le proprietà log4net Context ...

nel 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" /> 
1

non credo che file di log per ogni utente è possibile, ma è possibile scrivere strato personalizzato tra il log4net e la vostra applicazione, che antepone ID utente prima di scrivere il login.

1

È possibile scrivere un layout personalizzato ereditando da XmlLayoutBase.

8

Credo che il file di configurazione Log4Net supporti le variabili di ambiente (ad esempio USERNAME) e modelli personalizzabili che dovrebbero darti quello che vuoi.

Vedere "PatternString per configurazione basata su modello" in the Log4Net V1.2.10 release notes.

+0

1 Questo è il modo per farlo. –

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

from here

+0

molto utile, aggiornato. – Roylee

+1

N.B. Sostituisci l'elemento '' con quanto sopra. –

+0

grazie mille, per te – Zaragon

Problemi correlati