C# WPF上位机开发(日志调试)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        程序开发的过程中,调试肯定是少不了的。比如说,这个时候,我们可以设置断点、查看变量、检查函数调用堆栈等等。但是如果等软件交付出去了,这个时候应该怎么调试呢?我想,大部分人第一时间想到的方法就是查看日志。日志中不仅包含了时间信息,还有软件操作信息及传感器设备的通讯数据等等,这些都为我们分析软件故障打下了坚实的基础。所以,日志文件对我们来说,其实非常重要。

        要在c# wpf里面生成对应的日志文件,使用方法也非常简单。相关的库也主要以log4net为主。这部分和java优点相似。

1、安装log4net库

        安装log4net库的话,可以直接在引用里面通过NuGet添加。在输入框里面填入log4net,我们就可以看到对应的查询内容,第一个搜索到的结果就是我们需要的日志库,

2、配置App.config文件

        要使用log4net,除了需要编写代码之外,另外一部分就是配置App.config文件。这个文件一般是c# wpf工程自带的,大家只要根据自己配置的内容,再添加上log4net的配置信息即可,

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
  
  <log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="log.txt" />
      <appendToFile value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>

    <root>
      <level value="DEBUG" />
      <appender-ref ref="FileAppender" />
    </root>
  </log4net>

</configuration>

3、编码测试log4net

        首席,开始的log4net和log4net.Config都必须用using引入进来。

using log4net;
using log4net.Config;

      接着要使用上log4net,只要做好三个步骤就可以了。第一步,声明一下log对象;第二步,初始化log4net;第三步,开始利用log4net打印信息即可。

        private static readonly ILog log = LogManager.GetLogger(typeof(App));

        public MainWindow()
        {
            InitializeComponent();

            // initialize log4net
            XmlConfigurator.Configure();

            // begin to log now
            log.Info("Application started");
        }

        如果没有意外的话,我们就可以在debug目录下面看到一个log.txt文件,它打印的内容是这样的,

2023-12-12 08:03:15,770 [1] INFO  WpfApp.App - Application started

4、其他打印方式

        目前log4net支持五种方式打印,分别是debug、info、warn、error和fetal。如果大家需要在gui的windows下同步查看对应日志信息的话,那么可以根据不同的类别打印,附上不同的颜色,这样也更直观一点。

            log.Debug("This is a debug message");
            log.Info("This is an info message");
            log.Warn("This is a warning message");
            log.Error("This is an error message");
            log.Fatal("This is a fatal message");

        日志中打印出来的效果是这样的,

2023-12-12 08:07:29,283 [1] DEBUG WpfApp.App - This is a debug message
2023-12-12 08:07:29,283 [1] INFO  WpfApp.App - This is an info message
2023-12-12 08:07:29,283 [1] WARN  WpfApp.App - This is a warning message
2023-12-12 08:07:29,283 [1] ERROR WpfApp.App - This is an error message
2023-12-12 08:07:29,283 [1] FATAL WpfApp.App - This is a fatal message

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

克隆虚拟环境

conda虚拟环境 克隆clone 在服务器上想要使用别人搭好的环境&#xff0c;但是又怕自己对环境的修改更新会影响他人的使用&#xff0c;这个时候可以使用conda命令进行复制环境。 首先假设已经安装了Anaconda。 根据已有环境名复制生成新的环境 1、假设已有环境名为A&#xff0c…

面向对象三大特征——多态

目录 1. 多态 1.1 概述 1.2 多态中方法的访问特点 1.3多态中成员变量访问特点 1.4 多态中静态方法的访问特点 1.5 向上或向下转型 1.6多态的好处 2.抽象类 2.1抽象类 2.2抽象方法 2.3抽象类的特点 2.4抽象类成员特点 3.接口 3.1接口的概述 3.2接口中成员的特点 …

CANoe出现Busoff后如何恢复

项目场景&#xff1a; 在测试Busoff或者ECU进行快速上下电测试时&#xff0c;CANOE往往会进入Busoff状态&#xff0c;DUT会自动恢复&#xff0c;但CANoe只有手动重启CANOE&#xff0c;从而导致自动化测试无法进行下去。这时可以通过CAPL检测到Busoff发生时使用特定的函数重启C…

Python虚拟环境指南:告别依赖地狱

一、背景 在SAAS&#xff08;软件即服务&#xff09;平台中&#xff0c;用户使用自行定制的Python脚本已经成为司空见惯的做法&#xff0c;然而&#xff0c;由于不同用户对Python三方库的需求各不相同&#xff0c;而底层服务器一般只安装了一个Python版本。举例来说&#xff0…

【数据结构第 6 章 ④】- 用 C 语言实现图的深度优先搜索遍历和广度优先搜索遍历

目录 一、深度优先搜索 1.1 - 深度优先搜索遍历的过程 1.2 - 深度优先搜索遍历的算法实现 二、广度优先搜索 2.1 - 广度优先搜索遍历的过程 2.2 - 广度优先搜索遍历的算法实现 和树的遍历类似&#xff0c;图的遍历也是从图中某一顶点出发&#xff0c;按照某种方法对图中所…

算法leetcode|92. 反转链表 II(rust重拳出击)

文章目录 92. 反转链表 II&#xff1a;样例 1&#xff1a;样例 2&#xff1a;提示&#xff1a;进阶&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 92. 反转链表 II&#xff1a; 给你单链表的…

基于itextpdf的java读取和更新pdf表单域字段值功能

基于itextpdf的java读取和更新pdf表单域字段值功能 执行结果为&#xff1a; Hello World! keytopmostSubform[0].Page1[0].qhjc[0] keytopmostSubform[0].Page1[0].qhmc[0] keytopmostSubform[0].Page1[0].cqzh[0] keytopmostSubform[0].Page1[0].fm_year[0] keytopmostSubf…

springboot整合vue,将vue项目整合到springboot项目中

将vue项目打包后&#xff0c;与springboot项目整合。 第一步&#xff0c;使用springboot中的thymeleaf模板引擎 导入依赖 <!-- thymeleaf 模板 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-t…

yolov5单目测距+速度测量+目标跟踪

要在YOLOv5中添加测距和测速功能&#xff0c;您需要了解以下两个部分的原理&#xff1a; 单目测距算法 单目测距是使用单个摄像头来估计场景中物体的距离。常见的单目测距算法包括基于视差的方法&#xff08;如立体匹配&#xff09;和基于深度学习的方法&#xff08;如神经网…

锂电池是什么

锂电池 电工电气百科 文章目录 锂电池前言一、锂电池是什么二、锂电池的类别三、锂电池的作用原理总结前言 锂电池相比其他类型的电池具有许多优点,包括高能量密度、长寿命、低自放电率和较低的内阻等。这些特性使它成为现代电子设备和电动交通工具中首选的能源储存技术。然而…

互联网加竞赛 python+opencv+机器学习车牌识别

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于机器学习的车牌识别系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;4分工作量&#xff1a;4分创新点&#xff1a;3分 该项目较为新颖&#xff0c;适…

热烈庆祝安徽普朗膜技术有限公司参加2024济南生物发酵展

公司自2004年注册成立以来主要业务领域主要有以乳酸、氨基酸、抗生素为主的发酵液的提取分离&#xff1b;醋、酱油发酵产品的产品升级&#xff0c;果汁、茶饮料等天然产物提取的除菌和澄清过滤&#xff1b;低聚木糖、低聚果糖、果葡糖浆、高果糖浆等过滤、纯化、浓缩&#xff1…

java SSM酒店客房管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM酒店客房管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统主要采…

机器学习的12个基础问题

1.阐述批归一化的意义 算法 1&#xff1a;批归一化变换&#xff0c;在一个 mini-batch 上应用于激活 x。 批归一化是一种用于训练神经网络模型的有效方法。这种方法的目标是对特征进行归一化处理&#xff08;使每层网络的输出都经过激活&#xff09;&#xff0c;得到标准差为 …

Mr. Cappuccino的第66杯咖啡——解决MacOS中终端下的中文乱码问题

解决MacOS中终端下的中文乱码问题 中文乱码问题解决方法 中文乱码问题 解决方法 查看Mac使用的是哪个shell echo $SHELL我这里使用的是zsh&#xff0c;将配置添加到.zshrc配置文件中 vi ~/.zshrc 输入i进入编辑模式 esc退出编辑模式 :wq# UTF-8 export LANGen_US.UTF-8加载配…

Excel中MATCH和INDEX函数的用法详解,以及Vlookup的数组用法

match函数 目的&#xff1a;查询函数&#xff0c;范围单元格中搜索特定的项&#xff0c;然后返回该项在此区域中的相对位置。 For example:让 match 去【隔壁办公室】找【老张】 Match 回复&#xff1a;【老张】坐在【隔壁办公室】第【四】个座位上 公式&#xff1a;【 mat…

驱动框架之_gpio_and_pinctrl-设备树的修改

1&#xff1a;设置设备树中的信息 安装“ Pins_Tool_for_i.MX_Processors_v6_x64.exe ”后运行&#xff0c;打开 IMX6ULL 的配置文件“ MCIMX6Y2xxx08.mex ”&#xff0c;就可以在 GUI 界面中选择引脚&#xff0c; 配置它的功能&#xff0c;这就可以自动生成 Pinctrl 的子节…

Linux查看进程的详细信息

使用top找到进程id使用下面命令查看进程的详细信息 systemctl status 17878

Microsoft visual studio 2013卸载方法

1、问 题 Microsoft visual studio 2013 无法通过【程序与功能】卸载 2、解决方法 使用微软的Microsoft visual studio 2013 专用卸载工具 工具下载链接&#xff1a;https://github.com/Microsoft/VisualStudioUninstaller/releases 或 链接&#xff1a;https://pan.baidu.c…

服务器挖矿木马识别与清理

一、什么是挖矿木马 挖矿木马会占用CPU进行超频运算,从而占用主机大量的CPU资源,严重影响服务器上的其他应用的正常运行。黑客为了得到更多的算力资源,一般都会对全网进行无差别扫描,同时利用SSH爆破和漏洞利用等手段攻击主机。部分挖矿木马还具备蠕虫化的特点,在主机被成…