您是否可以在Asp.net Mvc 2中为每个用户使用Enterprise Library 5创建日志文件?

问题描述:

到目前为止建议的解决方案有2种,在文件名部分使用%username%的环境变量,low level unmanaged code来完成。环境变量可能只会回退运行应用程序的用户(服务器进程登录),而不是表单的经过登录验证的用户名或userGuid。您是否可以在Asp.net Mvc 2中为每个用户使用Enterprise Library 5创建日志文件?

这是在EntLib 5中修复或更改的吗?我可以以某种方式配置一个或多个类别中的每个用户日志吗?这样我可以记录App_Data/User1.Recordings.log和App_Data/User1.Category2.log等?

+0

所以,你要在Web服务器上的日志信息,但每个用户都会有自己的日志文件。是对的吗?你在使用模拟吗? – 2010-05-18 14:00:34

+0

不,它是基于登录表 – Maslow 2010-05-18 20:09:47

您可以通过编程创建日志文件。看看这个链接一般参考文献:

http://www.davidhayden.com/blog/dave/archive/2006/02/14/2801.aspx

//Create filename 
String fileName = <method_to_determine_logged_on_user> +".Recordings.log"; 

// Create a log file 
Stream logFile = File.Create(fileName); 

// Create the TextWriterTraceListener 
TextWriterTraceListener listener = new TextWriterTraceListener(logFile); 

// Add the listener to the list of TraceListeners 
Trace.Listeners.Add(listener); 

// Output the message 
Trace.Write("My log message"); 

// Flush the output. 
Trace.Flush(); 
+0

的形式,我可以在Global.asax的某个地方执行此操作,以便记录器的任何呼叫者都可以访问它? – Maslow 2010-05-18 17:13:24

+0

我会将这种类型的逻辑添加到新的静态日志记录类(例如Logger.cs)中。然后,您可以编写日志记录方法来接受记录消息的参数以及当前用户ID的参数等。静态日志记录方法可以从应用程序中的任何位置调用。 – 2010-05-18 18:55:18

+0

虽然链接是针对企业库文章的,但代码与企业库无关。 – 2011-03-16 13:55:03