【WPF】EntityframeworkCore NLog出力设置
2024-10-02 21:49:44
最近在用EFcore,由于不熟悉,经常出现一些异常都不知道如何排查,只能把EFcore的执行记录打印出来调查。确实简化了很多问题的调查。
官网提供了Asp.net Core与.net core 应用的配置,唯独没有WPF等应用的说明。本章作为一个补充,供各位参考。
由于我用的是Prism+PostgreSQL+Nlog,所有这里只讲述EntityframeworkCore的Nlog出力方法。
所需安装包
- NLog
- NLog.Extensions.Logging
- Npgsql.EntityFrameworkCore.PostgreSQL
依赖注入设置
App.xaml.cs
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterForNavigation<Login>(Authentication.LoginURL);
containerRegistry.Register<ILoggerFactory, NLog.Extensions.Logging.NLogLoggerFactory>();
}
NLogLoggerFactory默认会创建一个新的NLogLoggerProvider。
NLog.config配置
这是个人喜欢的配置,仅供参考。
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"> <variable name="loglayout" value="${longdate}|${level:uppercase=true}|${message} ${exception:format=tostring}"/>
<targets async="true">
<target name="infologfile" xsi:type="File" fileName="logs/Info.${shortdate}.log"
layout="${loglayout}" />
</targets> <rules>
<logger name="*" minlevel="Debug" writeTo="debuglogfile" />
</rules>
</nlog>
async="true"非同期更新日志。默认在exe执行文件夹下创建一个Logs文件夹存放日志。
DbContext配置
由于使用了DI,只需要在构造函数里面传入ILoggerFactory就可以。
public class PsqlDbContext : DbContext, IDbContext
{ private readonly ILoggerFactory _factory; public PsqlDbContext(ILoggerFactory loggerFactory)
{
_factory = loggerFactory;
} protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder
.UseLoggerFactory(_factory)
.EnableSensitiveDataLogging()
.UseNpgsql("ProstgreSqlConnectStringxxxxx");
}
这样就设置完成了。
实例截图
执行了那些sql,执行超时时间都一目了然。
最新文章
- ARM Linux Qt 5.x.x 无标题栏
- canvas 动态画线
- Microsoft.Office.Interop.Excel 程序集引用 ,Microsoft.Office.Interop.Excel.ApplicationClass 无法嵌入互操作类型
- Android学习笔记——button_activity
- 6754&#160;Keyboard of a Mobile Telephone
- oracle增量备份
- 深入浅出Docker(一):Docker核心技术预览
- Sql Server 系统表功能
- MySQL索引的创建、删除和查看
- String.Format 全汇总
- wordpress密码生成与登录密码验证
- Self-numbers 2 - SGU 108
- 基于visual Studio2013解决C语言竞赛题之0705矩阵转置
- Eclipse中快捷键的使用
- 如何使用XE2及更高版本中提供的自定义皮肤(样式)功能
- 【NLP】3000篇搜狐新闻语料数据预处理器的python实现
- .net core 部署到 iis 步骤及报错解决方法
- mysql7笔记----存储过程实例
- nodejs版 阿里云开放api签名算法
- Python——POP3邮件协议
热门文章
- 持续集成高级篇之Jenkins windows/linux混合集群搭建(二)
- git:clone 本地克隆的几种情况
- 搜索入门练习题9 LETTERS 题解
- Linux 笔记 - 前三章 CentOS 简介、安装和远程连接
- CTC安装错误之:binding.cpp:6:29: fatal error: torch/extension.h: No such file or directory
- vue2.0搭建vue手脚架(vue-cli)
- python接口测试(post,get)-传参(data和json之间的区别)
- jquery让form表单异步提交
- 记一个复杂组件(Filter)的从设计到开发
- Fliptile POJ-3279 DFS