设置EF拦截器文件名布局

时间:2015-10-13 16:33:23

标签: c# entity-framework logging entity-framework-6

在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}" />

这种设施是否可用而无需编码和重新编译?

1 个答案:

答案 0 :(得分:1)

根据source code for EF6,使用简单记录器是不可能的。你需要实现自己的拦截器才能做到这一点。

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