Entity Framework Logging and Intercepting Database Operations (EF6 Onwards)

1.自定义日志

    public class LogHelper
    {
        public static void DbInfo(string str)
        {
            string className = "方法名";
            string path = "/DbInfo.txt";
            if (string.IsNullOrEmpty(path))
            {
                path = "/DbInfo.txt";
            }
            string oriPath = HttpContext.Current.Request.MapPath("/LogFile");
            if (!Directory.Exists(oriPath))
            {
                Directory.CreateDirectory(oriPath);
            }
            try
            {
                FileStream fs = new FileStream(HttpContext.Current.Request.MapPath("/LogFile" + path), FileMode.Append);
                StreamWriter sw = new StreamWriter(fs);
                //开始写入
                var host = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority;
                sw.WriteLine(string.Format("domain={0},className={1},time={2}", host, className, DateTime.Now));
                sw.WriteLine(str);
                //清空缓冲区
                sw.Flush();
                //关闭流
                sw.Close();
                fs.Close();
            }
            catch (Exception)
            {
               
            }
   
        }
}
View Code

2. Set DbContext.Database.Log property 

    public class QxunDbContext : DbContext 
    {
        public QxunDbContext()
            : base("server=localhost;uid=sa;pwd=6665508a;database=Qxun;")
        {
            this.Database.Log = LogHelper.DbInfo;
        }
        
        public DbSet<Department> Departments { get; set; }
        public DbSet<Course> Courses { get; set; } 
    }
View Code

3.Show LogInfo

domain=http://localhost:50462,className=方法名,time=2017/7/8 星期六 上午 11:22:10
已于 2017/7/8 星期六 上午 11:22:10 +08:00
 打开了连接
domain=http://localhost:50462,className=方法名,time=2017/7/8 星期六 上午 11:22:10
已于 2017/7/8 星期六 上午 11:22:10 +08:00
 启动了事务
domain=http://localhost:50462,className=方法名,time=2017/7/8 星期六 上午 11:22:10
INSERT [dbo].[Courses]([Title], [Credits])
VALUES (@0, @1)
SELECT [CourseID]
FROM [dbo].[Courses]
WHERE @@ROWCOUNT > 0 AND [CourseID] = scope_identity()
domain=http://localhost:50462,className=方法名,time=2017/7/8 星期六 上午 11:22:10


domain=http://localhost:50462,className=方法名,time=2017/7/8 星期六 上午 11:22:10
-- @0: 'Title' (Type = String, Size = -1)

domain=http://localhost:50462,className=方法名,time=2017/7/8 星期六 上午 11:22:10
-- @1: '1' (Type = Int32)

domain=http://localhost:50462,className=方法名,time=2017/7/8 星期六 上午 11:22:10
-- 正在 2017/7/8 星期六 上午 11:22:10 +08:00
 执行
domain=http://localhost:50462,className=方法名,time=2017/7/8 星期六 上午 11:22:10
-- 已在 0 毫秒内完成,结果为: SqlDataReader

domain=http://localhost:50462,className=方法名,time=2017/7/8 星期六 上午 11:22:10
LogInfo
原文地址:https://www.cnblogs.com/liandy0906/p/7136226.html