19

We have a ASP .Net application whereby we use Log4Net to log details within the app - nothing new there - and the rolling log filenames are in the usual format of:

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

A each user of the application adds to the logfile, the logfile can be difficult to read for a specific user's case and so, we'd like to modify the config file somehow to record the user's log details individually, each writing to a specific file, e.g.

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

where is each user's unique application Id, made up of a five digit number, e.g.

12345rolling-log.txt

Any ideas on the best way to implement this, assuming that it's possible?

Cheers

Brett

Brett Rigby
  • 6,101
  • 10
  • 46
  • 76

6 Answers6

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

from here

sll
  • 61,540
  • 22
  • 104
  • 156
isobretatel
  • 3,812
  • 7
  • 34
  • 49
18

look for log4net Context Properties...

in your code :

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

then

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

in the log4net config file:

<file type="log4net.Util.PatternString"
            value="%property{id}rolling-log.txt" />
sll
  • 61,540
  • 22
  • 104
  • 156
Butu
  • 196
  • 1
  • 2
8

I believe the Log4Net configuration file supports environment variables (e.g. USERNAME) as well as customizable patterns which should give you what you want.

Look at "PatternString for pattern based configuration" in the Log4Net V1.2.10 release notes.

Joe
  • 122,218
  • 32
  • 205
  • 338
1

I don't think that log file per user is possible but you can write custom layer between log4net and your application which prepends user id before writing to log.

TheVillageIdiot
  • 40,053
  • 20
  • 133
  • 188
1

You can write a custom layout by inherit from XmlLayoutBase.

Enyra
  • 17,542
  • 12
  • 35
  • 44
1

Checkout the RollingPatternFileAppender, just like the rollingfileappender plus dynamic file name http://mysite.verizon.net/vze14bhji

zsu
  • 11
  • 1