使用EF Core和Log4net在日志文件中记录Sql查询

时间:2020-03-09 12:48:15

标签: c# .net-core entity-framework-core log4net

我正在尝试使用log4net和.NET Core(EF 3.1)将SQL查询记录到文件中。

我尝试了以下配置:

Startup.cs

loggerFactory.AddLog4Net();

DBContext.s

private readonly ILoggerFactory _loggerFactory;

 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {

                    optionsBuilder.UseLoggerFactory(_loggerFactory);

        }

log4netConfig:

 <appender name="logger" type="log4net.Appender.RollingFileAppender">
    <file value="c:\\log.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maximumFileSize value="100MB" />
    <maxSizeRollBackups value="3"/>
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="[%thread] ; %date ; %property{ExcutionTime} ; %message%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="DEBUG" />
      <levelMax value="DEBUG" />
    </filter>
  </appender>

结果我得到了一个空文件。我想念什么?

1 个答案:

答案 0 :(得分:0)

您可以在DbContext类中尝试以下操作:

private readonly ILogging _logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public MyContext(): base("<connectionstring>")
{
    Database.Log = log => _logger.Debug(log);
}

已经有一个非常相似的答案,可能会进一步帮助您。 看一下以下内容:How to log SQL generated by EF using log4net