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

19
我们有一个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.

这里的“where”代表每个用户的唯一应用程序ID,由五位数字组成,例如:

12345rolling-log.txt
任何想法如何实现这一点,假设这是可能的?干杯,Brett。
6个回答

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

从这里


1
请将上述内容替换 <param name="File" value="..." /> 元素。 - Chris Schiffhauer

18

寻找 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" />

8
我相信Log4Net配置文件支持环境变量(例如USERNAME)以及可自定义的模式,这应该可以满足您的需求。
请参阅“基于模式的配置的PatternString”在Log4Net V1.2.10发布说明中。

1

2
网站已经不存在了。 - Jacobr365

1

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


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接