答案 0 :(得分:0)
注入ILog
或ILogger
实例不会隐式注册任何类型的异常处理程序。它只是让您访问记录器。您仍然需要告诉它记录什么以及何时记录它。
如果要测试配置,请从控制器的某个操作进行日志记录调用,或使用其中一个OnAction
事件调用程序。这可能应该做你想要的:
public class MyController : Controller
{
protected override void OnActionExecuted(ActionExecutedContext context)
{
if (Logger != null)
{
string message = string.Format("Action executed: {0}.{1}",
context.ActionDescriptor.ControllerDescriptor.ControllerName,
context.ActionDescriptor.ActionName);
Logger.Log(typeof(MyController), log4Net.Core.Level.Trace,
message, context.Exception);
}
base.OnActionExecuted(context);
}
[Inject]
public ILogger Logger { get; set; }
}
这将记录每个控制器操作 - 包括异常。如果您只关心异常,请在登录前检查context.Exception
和context.ExceptionHandled
属性,或者更好地编写自定义ActionFilter来执行此操作。