WPF log4net用法

article/2025/9/7 23:25:55

WPF log4net用法

一、在工程中管理NuGet程序包,找到log4net,点击安装,如下图已成功安装;
在这里插入图片描述
二、在工程中右键添加新建项,选择应用程序配置文件(后缀为.config),然后设置名称,这里设置为Log4Net.config,文件里做如下配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration><configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/></configSections><!--日志配置部分--><log4net><root><!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF--><!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录--><!--如果没有定义LEVEL的值,则缺省为DEBUG--><level value="ALL"/><appender-ref ref="RollingFileAppender"/></root><appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"><!--日志文件存放位置,在debug文件夹下的log文件夹下--><file value="Logs/" /><!--是否追加到文件,默认为true,通常无需设置--><appendToFile value="true"/><!--这种情况下MaxSizeRollBackups和maximumFileSize的节点设置才有意义--><RollingStyle value="Composite"/><!--每天记录的日志文件个数,与maximumFileSize配合使用--><MaxSizeRollBackups value="-1"/><!--日期的格式,每天生成一个文件,每月会生成一个文件夹,存放当月的文件日志--><datePattern value="yyyy-MM&quot;/&quot;yyyyMMdd&quot;.txt&quot;"/><staticLogFileName value="false"/><!--多线程时采用最小锁定--><lockingModel type="log4net.Appender.FileAppender+MinimalLock"/><!--每个日志文件的大小,可用的单位:KB|MB|GB--><maximumFileSize value="2MB"/><!--日志格式--><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date [%t]%-5p %c - %m%n"/></layout></appender></log4net>
</configuration>

三、在工程Properties属性下找到AssemblyInfo.cs文件,在文件最后一行,添加如下格式的指定配置文件:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]

如下图:
在这里插入图片描述
四、我们添加一个Logger类:

public class Logger{private static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");private static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");public static void WriteInfo(string info){//Console.WriteLine(info);if (loginfo.IsInfoEnabled){loginfo.Info(info);}}public static void WriteError(string error){//Console.WriteLine(error);if (logerror.IsErrorEnabled){logerror.Error(error);}}public static void WriteError(string info, Exception ex){//Console.WriteLine(info);if (logerror.IsErrorEnabled){logerror.Error(info, ex);}}}

五、最后我们在需要记录日志的地方调用如下方法即可;

try{//......}catch (Exception ex){//记录异常Logger.WriteError(ex.ToString());}

六、在程序的根目录下,可以看到Logs文件夹下面就生成了Log文件;更多的生成Log方式可以通过配置config文件来设定;


http://www.hkcw.cn/article/hkBMweWNBy.shtml

相关文章

视频监控管理平台EasyCVR安防监控小知识:视频监控AI智能分析的常见部署方式有哪些?

一、方案背景​ 随着视频监控技术迭代&#xff0c;AI智能分析成为提升系统价值的核心。通过实时处理视频流辅助决策&#xff0c;广泛应用于智慧社区、园区等场景。由于AI算法部署方式多样且各有适用场景&#xff0c;因此合理选择部署方式是项目成功的关键。 二、主流AI算法部署…

5G RedCap是什么-与标准5G的区别及支持路由器推荐

技术背景与重要性 从智能穿戴到工业传感器&#xff0c;物联网设备种类繁多&#xff0c;但并非所有设备都需要标准5G的全部功能。为满足这些中端应用的需求&#xff0c;3GPP在Release 17中引入了5G RedCap&#xff08;Reduced Capability&#xff09;&#xff0c;也称为5G NR-L…

vmware虚拟机固定IP

vmware虚拟机固定IP vmware虚拟机端设置 vmware 设置nat模式 打开设置“网络和Internet”&#xff0c;点击“更改适配器选项”&#xff0c;点击适配器VMnet8&#xff0c;修改IP和DNS相关配置 虚拟机端设置 root用户登录虚拟机&#xff0c;输入命令&#xff1a; vi /et…

据传苹果将在WWDC上发布iOS 26 而不是iOS 19

苹果可能会对其操作系统的编号方式做出重大改变&#xff0c;基于年份的新版系统会将iOS 19重新命名为 iOS 26&#xff0c;同时 macOS 也会以同样的方式命名。 苹果的编号系统相当简单&#xff0c;版本号每年都会像钟表一样定期更新。然而&#xff0c;今年秋天情况可能有所不同&…

【深度剖析】义齿定制行业数字化转型模式创新研究(上篇2:痛点和难点分析)

数字化转型正在重塑义齿行业的生态格局,但也面临技术融合与模式变革的深层挑战。当前,义齿定制行业正处于从传统手工制造向全流程数字化制造转型的关键阶段。3D扫描、CAD/CAM(计算机辅助设计与制造)、3D打印等技术的广泛应用,显著提升了义齿制作的精度和效率。传统石膏模型…

英语学习5.29

主语 be动词 the first to do sth ✅ 例句解析&#xff1a; He was the first to arrive at the meeting. 他是第一个到会议现场的人。 Zhai Zhigang was the first Chinese astronaut to walk in space. 翟志刚是第一个进行太空行走的中国宇航员。 She is the first in h…

【从零开始学习QT】快捷键、帮助文档、Qt窗口坐标体系

目录 Qt Creator 中的快捷键 使用帮助文档 Qt 窗口坐标体系 QT专栏&#xff1a;QT_uyeonashi的博客-CSDN博客 Qt Creator 中的快捷键 • 注释&#xff1a;ctrl / • 运行&#xff1a;ctrl R • 编译&#xff1a;ctrl B • 字体缩放&#xff1a;ctrl 鼠标滑轮 • 查找&am…

docker网络相关内容详解

一、docker与k8s 一、Docker 核心解析 1. Docker 定义与架构 本质&#xff1a; 容器化平台&#xff08;构建容器化应用&#xff09;、进程管理软件&#xff08;守护进程管理容器生命周期&#xff09;。客户端&#xff08;docker cli&#xff09;与服务端&#xff08;docker ser…

制造企业生产数据分析全解析:5大类数据定义、分析方法与落地指南

在制造业精细化管理需求日益迫切的背景下&#xff0c;生产数据分析成为破解效率低下、成本高企、质量波动等难题的关键。本文系统解析制造企业生产数据的核心类别、分析逻辑及落地路径&#xff0c;提供从数据采集到决策优化的全流程方法论。 文章首先阐明生产数据分析的核心价…

C# 类和继承(屏蔽基类的成员)

屏蔽基类的成员 虽然派生类不能删除它继承的任何成员&#xff0c;但可以用与基类成员名称相同的成员来屏蔽&#xff08;mask&#xff09; 基类成员。这是继承的主要功能之一&#xff0c;非常实用。 例如&#xff0c;我们要继承包含某个特殊方法的基类。该方法虽然适合声明它的…

C语言——数组

一、数组的概念 数组是一组相同类型元素的集合&#xff1b;从这个概念中我们就可以发现2个有价值的信息&#xff1a; &#xff08;1&#xff09;数组中存放的是1个或者多个数据&#xff0c;但是数组元素个数不能为0。 &#xff08;2&#xff09;数组中存放的多个数据&#xff…

Flink

文章目录 Flink1.Flink简介2.为什么选择Flink2.1 传统数据处理架构2.2 大数据Lambda架构2.3 流处理架构2.4 Flink是理想的流计算框架2.5 Flink的优势 3.Flink应用场景3.1 事件驱动型应用3.2 数据分析应用3.3 数据流水线应用 4.Flink技术栈5.Flink体系架构 Flink 1.Flink简介 …

使用C# 快速删除Excel表格中的重复行数据-详解

目录 简介 使用工具 C# 删除Excel工作表中的重复行 C# 删除指定Excel单元格区域中的重复行 C# 基于特定列删除重复行 RemoveDuplicates 方法快速比较 简介 重复行是指在Excel表格中完全相同的多行数据。这些冗余行的存在可能源于多种原因&#xff0c;例如&#xff1a; …

OpenCv高阶(十九)——dlib关键点定位

文章目录 一、什么是人脸关键点定位&#xff1f;二、关键点模型的下载及关键信息的理解三、dlib关键点定位的简单实现&#xff08;1&#xff09;导入必要的库&#xff08;2&#xff09;从指定路径读取图像文件&#xff08;3&#xff09;创建dlib的正面人脸检测器对象&#xff0…

【Java】线程池的实现原理是怎样的?CPU密集型任务与IO密集型任务的区别?

一、CPU密集型与IO密集型任务 1.CPU密集型任务(CPU-bound) 定义&#xff1a;需要大量CPU计算资源&#xff0c;大部分时间都在进行运算的任务。 这类任务的特点是计算量大&#xff0c;CPU占用率高。 特点&#xff1a; 主要消耗CPU资源执行速度取决于CPU的计算能力通常涉及复…

【QT】理解QT的“元对象系统”

目录 前置知识&#xff1a; &#xff08;1&#xff09;C运行时多态 &#xff08;2&#xff09;RTTI QT的元对象系统 1.元对象系统基本内容 2.元对象代码 3.元对象系统其它特性 前置知识&#xff1a; &#xff08;1&#xff09;C运行时多态 C的运行时多态是由虚函数和继…

Windows Server 2019--10 网络地址转换

本章要点 了解 NAT 技术的核心原理。掌握 NAT 技术的应用。掌握 NAT 网关的配置。 IP 地址分为两类&#xff0c;分别是私有IP地址(Private IP)与公用IP地址(Public IP)。 位于内部网络中的计算机使用的是私有IP地址&#xff0c;其不需要向IP地址发放机构提出申请。私有IP地址…

掌握STP技术:网络环路终结者实战

实验目的 理解生成树协议&#xff08;STP&#xff09;的基本原理及其在网络中的作用。掌握STP的配置方法&#xff0c;包括根桥选举、端口状态转换等关键机制。通过实验验证STP如何防止网络环路并实现冗余路径的优化管理。 实验环境 设备&#xff1a;支持STP的交换机&#xf…

通义灵码2.5——基于MCP打造我的12306火车票智能查询小助手

前沿技术应用全景图 本项目作为通义灵码2.5的标杆实践案例&#xff0c;展现了AI辅助开发在复杂业务系统中的革命性突破。通过深度集成12306 MCP服务体系&#xff0c;我们构建了一个融合智能决策、环境感知和自主优化的新一代火车票查询系统。 #mermaid-svg-4D7QqwJjsQRdKVP7 {…

不可变集合类型转换异常

记录一个异常&#xff1a;class java.util.ImmutableCollections$ListN cannot be cast to class java.util.ArrayList (java.util.ImmutableCollections$ListN and java.util.ArrayList 文章目录 1、原因2、解决方式一3、解决方式二4、关于不可变集合的补充4.1 JDK8和9的对比4…