设置EF拦截器文件名布局

本文关键字:文件名 布局 EF 设置 | 更新日期: 2023-09-27 18:17:34

在EF 6.1(起)中,我可以像下面这样配置我的app.config文件:

<interceptors>
  <interceptor type="System.Data.Entity.Infrastructure.Interception.DatabaseLogger, EntityFramework">
    <parameters>
      <parameter value="C:'Stuff'LogOutput.txt"/>
      <parameter value="true" type="System.Boolean"/>
    </parameters>
  </interceptor>
</interceptors>
上面的

位于我的app.config的EntityFramework部分。

我如何能够设置文件名的布局,以反映操作的日期类似于流行的记录器,如NLog,所以我每天得到新的日志?

<target name="logfile" xsi:type="File" fileName="C:'logs'folder'log_${shortdate}.txt" layout="${longdate} ${level:uppercase=true:padding=-5} [${threadid:padding=3}] ${logger:padding=-55} - ${message}" />

是否不需要一些编码和重新编译就可以使用这种功能?

设置EF拦截器文件名布局

根据EF6的源代码,使用简单的日志记录器是不可能的。你需要实现你自己的拦截器来做到这一点。

// Code from EF6 source:
public DatabaseLogger(string path, bool append)
{
    Check.NotEmpty(path, "path");
    _writer = new StreamWriter(path, append) { AutoFlush = true };
}