我正在考虑在我的网站中实现日志记录机制,我希望进行基本的用户操作日志记录。我不想记录他们点击的每个按钮,但我确实想记录他们所做的更改操作。
是否有任何库或文章/教程可以帮助我为我的 asp.net 站点实现良好且高效的日志记录机制。我不确定 MVC5 中是否有任何可能用于日志记录的更改,因为我知道用户身份验证和授权已从 4 更改为 5。
我确信有一个动态库可以在许多不同的情况下工作。
值得拥有:
- 异步功能
- 可扩展
- 使用简单
我正在考虑创建一个自定义过滤器或属性,然后记录用户的操作,但这只是我的想法,我在这里询问执行此操作的标准/行业方法是什么。
最佳答案
没有行业标准。 我使用了过滤器,或者重写了基本 Controller 类上的“onActionExecuting”方法来记录 Controller /操作事件。
编辑::
试图提供更多帮助,但这确实很模糊。 如果您担心错误和类似的事情,请使用 elmah。 对于其他日志记录,请使用 Nlog 或 Log4Net。
如果您尝试进行额外的日志记录,例如审核或类似的操作,您可以使用这些操作的任意组合或自定义的操作。在我的网站中,我创建了一个表,通过创建如下所示的对象来存储网站上的每次点击:
public class audit
{
public int ID { get; set; }
public DateTime AuditDate { get; set; }
public string ControllerName { get; set; }
public string ActionName { get; set; }
public Dictionary<string, object> values
}
在我的基本构造函数中,我重写了 OnActionExecuting 事件:
protected override void OnActionExecuting(ActionExecutingContext ctx)
{
checkForLogging(ctx);
//do not omit this line
base.OnActionExecuting(ctx);
}
假设我想使用新的审核对象记录所有获取请求
private void checkForLogging(ActionExecutingContext ctx)
{
//we leave logging of posts up to the actual methods because they're more complex...
if (ctx.HttpContext.Request.RequestType == "GET")
{
logging(ctx.ActionDescriptor.ActionName, ctx.ActionDescriptor.ControllerDescriptor.ControllerName, ctx.ActionParameters);
}
}
这就是我用操作名称、 Controller 名称和传递到方法中的所有参数填充日志记录对象所需的所有信息。您可以将其保存到数据库、日志文件或您真正想要的任何内容。
重点是它是一件非常大的事情。这只是一种方法,它可能对您有帮助,也可能没有帮助。也许更多地定义一下您到底想要记录什么以及何时执行?
您可以创建自定义属性并用它装饰方法,然后在 OnActionExecuting 方法触发时检查该属性是否存在。然后,您可以获取该过滤器(如果存在)并从中读取内容,并使用它来驱动您的日志记录(如果您愿意)...
关于asp.net - Asp.net MVC 5 项目中的事件和错误日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23053875/