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

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

干杯

布雷特

有帮助吗?

解决方案

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

其他提示

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

from this

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top