Lag*_*una 4 asp.net-mvc logging request asp.net-mvc-3
我想记录我的MVC 3应用程序的所有请求,包括请求的URL,用户的ip地址,用户代理等.最好的地方在哪里,
1)使用基础控制器?
2)使用动作过滤器?
3)其他人?
我在BaseController中执行此操作.像这样的东西:
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
// If in Debug mode...
if (filterContext.HttpContext.IsDebuggingEnabled)
{
var message = string.Format(CultureInfo.InvariantCulture,
"Leaving {0}.{1} => {2}",
filterContext.Controller.GetType().Name,
filterContext.ActionDescriptor.ActionName.Trim(),
filterContext.Result);
Logger.Debug(message);
}
// Logs error no matter what
if (filterContext.Exception != null)
{
var message = string.Format(CultureInfo.InvariantCulture,
"Exception occured {0}.{1} => {2}",
filterContext.Controller.GetType().Name,
filterContext.ActionDescriptor.ActionName.Trim(),
filterContext.Exception.Message);
Logger.Error(message);
}
base.OnActionExecuted(filterContext);
}
Run Code Online (Sandbox Code Playgroud)
希望你明白这个主意.
您还可以在执行操作之前使用以下内容进行记录:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
Run Code Online (Sandbox Code Playgroud)
HttpModule如果你问我,这似乎是最合适的.
在调用任何特定的Controller之前,所有关于日志记录的数据都可用.因此,如果您在控制器外部进行日志记录,那么您甚至可以捕获那些不是有效控制器操作的请求.并且不需要将控制器代码混乱,这实际上是一个跨领域的问题.
| 归档时间: |
|
| 查看次数: |
3433 次 |
| 最近记录: |