我正在尝试使用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>
结果我得到了一个空文件。我想念什么?
答案 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