滚动Log4Net日志文件中的自定义文件名?

时间:2009-06-23 07:29:20

标签: asp.net log4net

我们有一个ASP .Net应用程序,我们使用Log4Net来记录应用程序中的详细信息 - 没有新内容 - 滚动日志文件名的格式通常为:

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

应用程序的每个用户都添加到日志文件中,对于特定用户的情况,日志文件可能难以阅读,因此,我们想以某种方式修改配置文件以单独记录用户的日志详细信息,每次写入特定文件,例如

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

每个用户的唯一应用程序ID在哪里,由五位数字组成,例如

12345rolling-log.txt

关于实现这一点的最佳方法的任何想法,假设它是可能的?

干杯

布雷特

6 个答案:

答案 0 :(得分:35)

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

from here

答案 1 :(得分:16)

查找log4net上下文属性...

你的代码中的

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

然后

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

在log4net配置文件中:

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

答案 2 :(得分:8)

我相信Log4Net配置文件支持环境变量(例如USERNAME)以及可以为您提供所需内容的可自定义模式。

the Log4Net V1.2.10 release notes中查看“PatternString for pattern based configuration”。

答案 3 :(得分:1)

我不认为每个用户的日志文件是可能的,但您可以在log4net和您的应用程序之间编写自定义层,该应用程序在写入日志之前预先设置用户ID。

答案 4 :(得分:1)

您可以通过继承XmlLayoutBase来编写自定义布局。

答案 5 :(得分:1)

签出RollingPatternFileAppender,就像rollingfileappender加上动态文件名一样 http://mysite.verizon.net/vze14bhji