我们有一个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
关于实现这一点的最佳方法的任何想法,假设它是可能的?
干杯
布雷特
答案 0 :(得分:35)
<file type="log4net.Util.PatternString">
<conversionPattern value="C:\Logs\log-%date{ yyyy.MM.dd.HH.mm.ss}-[%processid].log" />
</file>
答案 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