06Prism WPF 入门实战 - Log控件库

1.概要

源码及PPT地址:https://github.com/JusterZhu/wemail

视频地址:https://www.bilibili.com/video/BV1KQ4y1C7tg?share\source=copy\web

本章分为以下几个部分来了解:

Part1 日志

Part1.1 全局异常捕捉

Part1.2 Dump

Part2 引入控件库

2.详细内容

Part1 日志

(1)Nuget安装:

Microsoft.Extensions.Logging.Abstractions

NLog.Extensions.Logging

NLog.Config

(2)配置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"internalLogLevel="info"throwException ="true"internalLogFile="logs/internal-nlog.txt">    //日志的错误位置文件<variable name="logDirectory" value="${basedir}/logs"/><!-- the targets to write to --><targets async="true"><!-- write logs to file  --><target xsi:type="File" name="allfile" fileName="${logDirectory}/nlog-all-${shortdate}.log"layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" /><!-- another file log, only own logs. Uses some ASP.NET core renderers --><target xsi:type="File" name="ownFile-web" fileName="${logDirectory}/nlog-own-${shortdate}.log"layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" /><!--|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}--><!-- write log message to database --><!--<target name="db"  xsi:type="AsyncWrapper" queueLimit="5000" overflowAction="Discard">--><target type="Database" name="db" dbProvider="Npgsql.NpgsqlConnection,Npgsql"    《这里的数据库名字注意查找》connectionString="Database=backofficev2;Host=*;User Id=*;Password=*;pooling=false;port=*;"><commandText>  //使用postgresql 这里的字段要加双引号,timestamp要将string类型的转换为timestamp类型INSERT INTO "SystemLog"("Source","Level","Content","CreatedAt") VALUES(@source, @level, @content, TO_TIMESTAMP(@createdAt, 'YYYY-MM-DD HH24:MI:SS'));</commandText> <!-- database connection parameters  ${logger}  Server-->   <-数据库中要写的字段-><parameter name="@source" layout="Server" /><parameter name="@level" layout="${level}" /><parameter name="@content" layout="${message}" /><parameter name="@createdAt" layout="${date}" /></target><!--</target>--></targets><!-- rules to map from logger name to target --><rules><!--TRACE,DEBUG,INFO,WARN,ERROR,FATAL警告级别控制-->  <logger name="*" minlevel="Trace" writeTo="allfile" /><!--INFO,WARN,ERROR,FATAL--><logger name="AiEcgWebApi.Controllers.*" minlevel="Warn" writeTo="db" /><!--DEBUG,INFO,WARN,ERROR,FATAL--><logger name="*" minlevel="Debug" writeTo="ownFile-web" />   </rules>
</nlog>

(3)App.cs注入log组件

protected override void RegisterTypes(IContainerRegistry containerRegistry)
{var factory = new NLog.Extensions.Logging.NLogLoggerFactory();Microsoft.Extensions.Logging.ILogger logger = factory.CreateLogger("NLog");containerRegistry.RegisterInstance(logger);
}

(4)ViewModel构造函数获取log引用

public MainWindowViewModel(ILogger logger)
{logger.LogInformation("hhhhhhh");
}

39736239e85999dd7e68cd87ab1772cb.png

Part1.1 全局异常捕捉

出错的任务中未观察到的异常将触发异常呈报策略时出现。

/// <summary>
/// 应用程序启动时创建Shell
/// </summary>
/// <returns></returns>
protected override Window CreateShell()
{//UI线程未捕获异常处理事件this.DispatcherUnhandledException += OnDispatcherUnhandledException;//Task线程内未捕获异常处理事件TaskScheduler.UnobservedTaskException += OnUnobservedTaskException;//多线程异常AppDomain.CurrentDomain.UnhandledException += OnUnhandledException; return Container.Resolve<MainWindow>();
}

Part1.2 Dump

程序异常崩溃前使用此类为进程创建DUMP文件,之后可以使用WinDbg等工具进行分析。(该文件包含一些敏感信息切勿将公司项目中的dump文件公布到互联网上)

Windebug分析案例:

https://mp.weixin.qq.com/s/i6cJHTrIPweDIplzzfHnVQ

Windebug分析教程:

https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/getting-started-with-windows-debugging?WT.mc_id=WDIT-MVP-5004326

Windebug命令:

https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/commands?WT.mc_id=WDIT-MVP-5004326

cdd63b8ebb8f2dc2fe0b47a7b6c6513d.png

58a3a559ce14ac33a873fec5e9afcb21.png

Part2 控件库

1.Nuget安装:MaterialDesignInXamlToolkit2.选择主题
Light theme:<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml" />
Dark theme:   <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Dark.xaml" />3.App文件:
<Application x:Class="MaterialTest.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"StartupUri="MainWindow.xaml"><Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml" /><ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" /><ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.DeepPurple.xaml" /><ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml" /></ResourceDictionary.MergedDictionaries>            </ResourceDictionary></Application.Resources>
</Application>4.配置View
<Window [...]TextElement.Foreground="{DynamicResource MaterialDesignBody}"Background="{DynamicResource MaterialDesignPaper}"TextElement.FontWeight="Medium"TextElement.FontSize="14"FontFamily="pack://application:,,,/MaterialDesignThemes.Wpf;component/Resources/Roboto/#Roboto"[...] >

05b73b06137a18d270bf3d2ea1dbafff.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天冷打字全靠抖?!桌面暖手宝,体验10s速热,温暖升级,冬天有TA就够了

▲点击查看没有一丝丝防备&#xff0c;冷空气说来就来了~无论是寒风猛烈的北方&#xff0c;还是湿冷又没有暖气的南方&#xff0c;对于上班族来说&#xff0c;冬天最痛苦的事情莫过于哆哆嗦嗦在工位码字了&#xff01;冷风侵袭无处不在&#xff0c;备上个暖手袋&#xff0c;根本…

试题导入mysql乱码_解决Mysql导入乱码问题

解决Mysql导入乱码问题方法一: 通过增加参数 –default-character-set utf8 解决乱码问题C:\Users\Administrator>mysql -uroot -p yktgl < F:\YIKATONG\application\gl.sql --default-character-setutf8方法二: 在命令行导入乱码解决1.mysql>use gl;2.mysql> set…

心的影子

我相信命理&#xff0c;但我不相信在床脚钉四个铜钱就可以保证婚姻幸福、白首偕老。 我相信风水&#xff0c;但我不相信挂一个风铃、摆一个鱼缸就可以使人财运亨通、官禄无碍。 我相信人与环境中有一些神秘的对应关系&#xff0c;但我不相信一个人走路时先跨走左脚或右脚就可以…

设计模式-Factory Method Pattern

为什么80%的码农都做不了架构师&#xff1f;>>> 一、 工厂方法&#xff08;Factory Method&#xff09;模式 工厂方法&#xff08;FactoryMethod&#xff09;模式是类的创建模式&#xff0c;其用意是定义一个创建产品对象的工厂接口&#xff0c;将实际创建工作推迟…

IoTSharp 2.0 发布

你站在桥上看风景&#xff0c;看风景人在楼上看你。明月装饰了你的窗子&#xff0c;你装饰了别人的梦。喜欢这首诗是因为觉得开源造福了我&#xff0c;我也在尝试贡献自己的力量&#xff0c; 成就他人的同时&#xff0c; 也成就了自己&#xff0c; 贡献开源事业的同时&#xff…

oracle监听

原理 客户端向服务器端发送连接请求&#xff0c;监听器监听到客户端德连接请求监听器监听到客户端德连接请求后&#xff0c;把客户端德连接请求交给数据库服务器处理客户端和服务器端建立连接&#xff0c;连接建立后&#xff0c;服务器端和客户端直接通信&#xff0c;而不再需要…

车窗上为啥总有一些小黑点?没想到居然藏着大作用!

全世界只有3.14 % 的人关注了爆炸吧知识经常坐车的人可能会发现一个小细节车窗边缘有一圈小黑点好多人都以为这个厂家的贴纸反正也不碍事就没去除它其实&#xff0c;这些小黑点确实有真正的科学用途其实并不是所有的车窗都有小黑点也可能是别的形状但是它们都有一个特点——都是…

mysql 免安装初始化_mysql免安装版配置步骤详解分享

1.准备工作下载mysql的最新免安装版本mysql-noinstall-5.1.53-win32.zip&#xff0c;解压缩到相关目录&#xff0c;如&#xff1a;d:\\ mysql-noinstall-5.1.53-win32。这个就是mysql的根目录了。2.配置在根目录下有几个文件如下&#xff1a;my-small.ini (这是针对一个小内存(…

Android之Shape和state_enabled使用总结

在Android程序开发中,我们经常会去用到Shape这个东西去定义各种各样的形状,首先我们了解一下Shape下面有哪些标签,都代表什么意思: solid:填充android:color指定填充的颜色 gradient:渐变android:startColor和android:endColor分别为起始和结束颜色, android:angle是渐…

装饰模式

JAVA23种设计模式之一&#xff0c;英文叫Decorator Pattern&#xff0c;又叫装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下&#xff0c;动态的扩展一个对象的功能. 1、装饰模式与类继承的区别&#xff1a; 1) 装饰模式是一种动态行为&#xff0c;对已经存在类…

Win11安卓极速教程!

适用于 Android 的 Windows 子系统&#xff08;以下简称“WSA”&#xff09;使你的 Windows 11 电脑能够运行 Android 应用。※ 如何在 Windows 11 上运行 Android 应用此前的教程较为详细&#xff0c;但也繁琐&#xff0c;尤其是 adb 部署部分&#xff0c;不适合新手入门&…

ubuntu12.04 使用gedit 打开txt文件中文乱码的处理方法

2019独角兽企业重金招聘Python工程师标准>>> gedit --encodingGB18030 filename.txt 转载于:https://my.oschina.net/zhangdapeng89/blog/58965

js与jsp

在JS代码片段中&#xff0c;通过<%request.getParameter("username")%> 访问了Login.jsp中表单传递过来的username属性的值&#xff0c;这样的操作上没有问题的。如果想要把getUserName()方法放在一个单独的Js中&#xff0c;如Welcome.js&#xff0c;也就是不在…

你最擅长哪种数学思维?

全世界只有3.14 % 的人关注了爆炸吧知识许多人会抱怨说&#xff0c;自己没有“数学头脑”。事实上&#xff0c;数学家会以各种各样的方式思考&#xff0c;根本没有所谓的哪种思考数学的方式是正确的。但这很可能造成沟通上的障碍&#xff0c;试想一下&#xff0c;一个用视觉图像…

Hive中视图机制的初步使用及分析

作者: 大圆那些事 | 文章可以转载&#xff0c;请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2013/04/29/hive-view-usage-and-analysis.html 本文是对Hive中逻辑视图的介绍&#xff0c;通过一个简单的视图例子&#xff0c;说明其…

励志!送女儿去厦大读研后,爸爸回家就考了厦大的博士,现在是女儿的“学弟”...

全世界只有3.14 % 的人关注了爆炸吧知识2020上半年&#xff0c;在安徽阜阳家里&#xff0c;女儿王睿在房间内上着厦门大学在线专业课&#xff0c;父亲王健作为师范高校教师直播着自己的思政公共课和生命教育有关课程。然而一到周末&#xff0c;王健也和女儿一样&#xff0c;作为…

【cocos2d-js官方文档】二十五、Cocos2d-JS v3.0中的单例对象

为何将单例模式移除 在Cocos2d-JS v3.0之前。全部API差点儿都是从Cocos2d-x中移植过来的&#xff0c;这是Cocos2d生态圈统一性的重要一环。可惜的是&#xff0c;这样的统一性也在非常大程度上限制了Cocos2d-html5的发展&#xff0c;有一些在C中非常有意义的涉及搬到Html5平台后…

mysql 中有什么命令_常用mysql命令大全

常用的MySQL命令大全连接MySQL格式&#xff1a; mysql -h主机地址 -u用户名 &#xff0d;p用户密码1、例1&#xff1a;连接到本机上的MYSQL。首先在打开DOS窗口&#xff0c;然后进入目录 mysqlbin&#xff0c;再键入命令mysql -uroot -p&#xff0c;回车后提示你输密码&#xf…

Android之webview背景设置为透明无效

Adndroid 2.X的设置 webview是一个使用方便、功能强大的控件&#xff0c;但由于webview的背景颜色默认是白色&#xff0c;在一些场合下会显得很突兀&#xff08;比如背景是黑色&#xff09;。 此时就想到了要把webview的背景设置为透明&#xff0c;这样就可以与其背景融为一体…

linux系统的运行级别

linux 运行级别 0 停机1 单用户模式&#xff0c;用来维护系统。2.多用户不能使用NFS模式。3 多用户模式&#xff0c;也是主要的使用模式4 未定义5 窗口使用模式6 重新启动模式用init(0 1 2 3 4 5 6)切换运行级别&#xff0c;&#xff08;init 3 切换到多用户模式&#xff09;转…