Регистрация Sql запросов в файле журнала с использованием ядра EF и Log4net - PullRequest
1 голос
/ 09 марта 2020

Я пытаюсь записать SQL запросов в файл, используя log 4net и. NET Core (EF 3.1).

Я попробовал следующую конфигурацию:

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 голосов
/ 09 марта 2020

Вы можете попробовать следующее в вашем классе DbContext:

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

Уже есть довольно похожий ответ, который может помочь вам в дальнейшем. Взгляните на следующее: Как записать в журнал SQL, сгенерированный EF, используя log 4net

...