版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011511086/article/details/80607066
参考代码:
using MatrixWebApiCore.Entity;
using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;
namespace MatrixWebApiCore.Common.Data
{
public class DataContext : DbContext
{
public DataContext(DbContextOptions<DataContext> options)
: base(options)
{ }
/// <summary>
/// 报告实体,执行增删改查用
/// </summary>
public virtual DbSet<GroupCharts> GroupCharts { get; set; }
public virtual DbSet<CombinationGroupCharts> CombinationGroupCharts { get; set; }
/// <summary>
/// 异常日志
/// </summary>
public virtual DbSet<Log> Log { get; set; }
}
}
public class ExceptionFilter : IExceptionFilter
{
public void OnException(ExceptionContext context)
{
//方式一,不推荐这样写
//var builder = new DbContextOptionsBuilder<DataContext>();
//builder.UseSqlServer("数据库连接字符串");
//DataContext dataContext = new DataContext(builder.Options);
//方式二,推荐,获取Startup.cs里面已经注册的实例
IWebHost host = Program.BuildWebHost(null);
IServiceScope scope = host.Services.CreateScope();
ILogRepository _logRepository = scope.ServiceProvider.GetService<ILogRepository>();
DataContext _dataContext = scope.ServiceProvider.GetService<DataContext>();
ILogRepository logRepository = new LogRepository(dataContext);
ILogRepository logRepository = new LogRepository();
Log log = new Log();
log.Id = Guid.NewGuid();
log.RequestURL = url;
log.LogTxt = context.Exception.ToString();
log.CreateTime = DateTime.Now;
_logRepository.Add(log);
scope.Dispose();
}
}