如何使用log4net记录EF生成的SQL
本文关键字:SQL EF 何使用 log4net 记录 | 更新日期: 2023-09-27 18:07:48
在我的web项目中,我使用EF6,我想记录生成的SQL用于调试目的。
我也使用log4net来处理日志,所以我正在寻找一种方法将它们集成在一起。
实现这一点的正确方法是什么?
目前我正在使用这种方法:在我的BaseController
中,我有这样的东西:
public class BaseController
{
protected MyDbContext DataContext { get; set; }
protected readonly ILog logger;
public BaseController()
{
DataContext = new MyDbContext();
logger = LogManager.GetLogger(GetType());
DataContext.Database.Log = (dbLog => logger.Debug(dbLog));
// ...
}
//...
}
我不知道这是不是最好的方法,但它是有效的…
如果有人在2年后仍在寻找解决方案:
@davioooh的解决方案让我得到了类似的东西(如果你可能使用实体框架没有WebApi,或者不想使用BaseController
类):
就在继承DbContext
时,您也可以在构造函数中这样做:
public class MyContext:DbContext
{
private readonly ILog _logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public MyContext()
: base("<connectionstring>")
{
Database.Log = log => _logger.Debug(log);
}
}