C# 日志管理框架:Common.Logging和log4net

01

DLL引用

‍common logging是一个通用日志接口框架,log4net是一个强大的具体实现框架. common logging可以把输出连接到其他非log类上, 如EntLib的日志、NLog等‍‍‍‍‍‍‍‍‍‍‍‍‍


项目中需要引入的DLL:
Common.Logging.dll

Common.Logging.Core.dll

Common.Logging.Log4Net1213.dll
log4net.dll

Common.Logging.log4net1213.dll和log4net.dll的版本需要匹配

以上几个库直接从NUGET上点击安装Common.Logging.log4net1213.dll,其它的几个库会自动作为依赖项目安装都程序集下,如下图

4b3a94c98d6809e21c2c4ca197ab831a.png

02


配置说明

将项目的app.config文件修改如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration><configSections><sectionGroup name="common"><section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" /></sectionGroup><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/></configSections><common><logging><factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1213"><arg key="configType" value="INLINE" /></factoryAdapter></logging></common><log4net><appender name="LogFileAppender" type="log4net.Appender.FileAppender"><param name="File" value="log.txt"/><param name="datePattern" value="MM-dd HH:mm"/><param name="AppendToFile" value="true"/><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/></layout></appender><root><level value="DEBUG" /><appender-ref ref="LogFileAppender" /></root></log4net><startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /></startup>
</configuration>

简要说明:

①. <arg key="configType" value="INLINE" /> : 这个表示log4net的配置直接写在配置文件里

如果配置文件写在其它地方,可以改成

<arg key="configType" value="FILE-WATCH" />

<arg key="configFile" value="~/log4net.config" />

以上配置表示将log4net的配置放到单独的文件中

②一个root日志记录器,log4net只允许一个root日志记录器,用于做全局日志输出;

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

其中:<level value="ALL" />表示记录器会将所有级别的日志提交给这里配置的附加器

这里配置了一个附加器:LogFileAppender(配置文件中的appender节点)

附加器(appender)可以定义多个,它只是一个声明,是否使用还是要看日志记录器是否引用了。没有配置appender(附加器)将不会输出日志

03


用法举例

定义:其中T为当前类名称

运行结果:

35e2c63180dad8c0faa24d76dfcf45d0.png

private static readonly Common.Logging.ILog logger = Common.Logging.LogManager.GetLogger<T>();logger.Info($"Enter [this].");logger.Info($"Leave [this].");

参考链接:

https://www.cnblogs.com/heys/p/5787123.html

https://www.shuzhiduo.com/A/QV5ZYko7Jy/

小编微信:mm1552923

公众号:dotNet编程大全

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

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

相关文章

我开发了一个对.NET程序进行瘦身的工具

我开发了一个对.Net程序瘦身的工具&#xff0c;可以把被引用但是没有被使用的程序集删除。我用它把一个.Net core程序从147兆瘦身到59.5兆。.NET中发布程序的时候有对程序集进行剪裁的功能&#xff0c;但是那个功能只能做静态检查。比如我们的项目使用了A程序集&#xff0c;A程…

三联竟出了这么赞的杂志!各领域佼佼者畅所欲言,为少年建立思维判断体系!

▲点击查看很多中国小孩的成长是断层的。10岁前被视作可爱稚子&#xff0c;被大人护着走&#xff1b;18岁猛然被定义为成年人&#xff0c;要选择大学、专业&#xff0c;开始面对感情。中间的人生呢&#xff1f;“你是个学生&#xff0c;学习是本职&#xff0c;现在谈什么人生&a…

C# WPF中添加调试信息查看窗体

第一步&#xff1a;添加wpf窗口&#xff1b;第二步&#xff1a;在主窗体image的MouseLeftButtonUp事件中调用调试窗口&#xff1b;StatusViewWindow svWindow new StatusViewWindow();svWindow.Show();第三步&#xff1a;在主窗体中开个线程通过udp接收光电广开的数据&#xf…

杨振宁追求的物理美学,居然在这里实现,物理学史上颜值最高的组合,看完后跪了……

全世界只有3.14 % 的人关注了爆炸吧知识一沙见世界 一花窥天堂手心握无限 须臾纳永恒杨振宁曾说读上面的四句诗可以感受到物理的美但物理的美不止于此物理还有一种庄严美一种神秘美一种初窥宇宙奥秘的畏惧美物理就是如此的迷人任何语言在它的面前都很贫瘠数学让人摆脱了愚昧而…

mysql字段使用timestamp类型和默认值CURRENT_TIMESTAMP表示默认为时间,类似mssql的getdate()功能;字段自增...

在mssql数据库中&#xff0c;时间字段如果想使用当前的时间&#xff0c;默认值是 getdate() 在mysql里面&#xff0c;如果是用 datetime类型&#xff0c;值用now() 是不允许的。 修改为 timestamp类型和默认值CURRENT_TIMESTAMP表示默认为时间&#xff0c;即可以达到mssql里面…

FirewallD is not running

2019独角兽企业重金招聘Python工程师标准>>> 1.发现安装好tomcat后&#xff0c;发现无法访问tomcat首页&#xff0c;后来发现防火墙没有开放8080端口。 需注意的是&#xff1a;CentOS 7防火墙换用Friewalld了&#xff0c;所以要用以下命令将端口号加进防火墙&#x…

三年租男友回家竟花了10万......

1 不要让别人一天毁了它&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 每天一个单身小技巧&#xff08;via.最佳蹲坑读物&#xff0c;侵删&#xff09;▼3 被封印在木桩里的哆啦A梦&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 大家的对象都是哪里…

微信重磅更新!这个功能等了 7 年

腾讯近日发布适用于 Windows 和 macOS 的新版微信客户端&#xff0c;本次主要更新如下&#xff1a;1.自动登录此前微信针对全新“自动登录该设备”功能进行了小范围的测试&#xff0c;本次更新后所有用户都可以使用该功能。当您勾选“自动登录该设备”后&#xff0c;微信将开启…

Navicat Premium 怎么安装比较快

Navicat Premium是一套数据库管理工具&#xff0c;结合其它Navicat成员&#xff0c;支持单一程序同时连接到MySQL、MariaDB、SQL Server、SQLite、Oracle和PostgreSQL数据库。将此工具连接数据库&#xff0c;你可以从中看到各种数据库的详细信息.包括报错&#xff0c;等等.当然…

.netCHARTING图表控件详细介绍及下载

.netCHARTING是一款功能强大的图表控件&#xff0c;利用.NET framework和GDI为工作于ASP.NET和Winform的C#和VB.NET开发人员提供可托管的图表解决方案&#xff0c;提供了多种2D和3D图表类型以及组合图、仪表&#xff0c;完全支持iPhone, iOS, Andoid, WP7 & Tablet &#x…

你距离哈佛学霸到底有多远?实力证明,真正的学霸精神不是智商,而是。。。

▲ 点击查看科学家曾在基于脑科学和认知科学后得出一个“学习的金字塔”理论。就是下面这张图&#xff1a;顶端的就是我们所谓的“知识”&#xff0c;但为了可以达到这个顶端&#xff0c;下面有一系列的支撑能力。而引申出来的核心概念&#xff0c;就叫“玩中学”。不要想当然地…

Android之IPC通信中的UID和PID识别

PCThreadState对象维护了2个变量 pid_t mCallingPid; uid_t mCallingUid; 从变量名称来看&#xff0c;这2个变量保存了进程的PID和UID&#xff0c;并且由于这两个变量由IPCThreadState对象维护&#xff0c;可见它们是与IPC相关的。具体它们保存的是…

Framer – 将视觉搞转换为更真实的动态原型

Framer 是一个 JavaScript 框架&#xff0c;简化了创建现实原型&#xff0c;实现完整的3D效果。以一种简单&#xff0c;可读的和强大的方式定义交互和创建动画。 另外还有 Framer Generator 是一个桌面应用程序&#xff0c;从 Photoshop 文件导入资源和和文件夹层次结构。你的…

现在相亲还要体检报告了?

1 伤害性极大&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 相亲还要看体检报告&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 难以启齿的地名&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 当知道你不回家之后&#xff08…

.NET 6新特性试用 | System.Text.Json序列化代码自动生成

前言几乎所有.NET序列化程序的实现基础都是反射。下列代码是Newtonsoft.Json的实现&#xff1a;protected virtual JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization) {JsonProperty property new JsonProperty();property.PropertyT…

UVa 264 - Count on Cantor

《算法竞赛入门经典》5.4.1的题目&#xff0c;大意是&#xff0c;给出一个数表&#xff0c;如下&#xff1a; 第一项是1/1&#xff0c; 第二项是1/2&#xff0c; 第三项是2/1&#xff0c; 第四项是3/1&#xff0c; 第五项是2/2.....给一个正整数n&#xff0c;求第n项。 设第n个…

他解决了物理学千年争端,成就肩比牛顿、爱因斯坦,但却鲜有人知......

全世界只有3.14 % 的人关注了爆炸吧知识电磁学是经典物理学的一部分&#xff0c;提到电磁学就不得不提经典电动力学创始人-麦克斯韦。麦克斯韦的名气好像并不如牛顿、爱因斯坦那样家喻户晓&#xff0c;毕竟当提到牛顿的时候&#xff0c;这个公式就如同条件反射似得浮现出来&…

Windows 11 全新 4K 壁纸发布

微软近日发布 Windows 11 全新主题包 「Pantone Color of the Year 2022」&#xff0c;包含 4 张经重塑的壁纸。微软表示&#xff1a;通过这四张使用 Pantone Color of the Year 2022,&#xff0c;PANTONE 17-3938 Very Peri 颜色&#xff0c;重新定制的 Windows 11 Bloom 壁纸…

CCNA综合实验(一):实验拓扑与要求

一、实验拓扑 屏幕剪辑的捕获时间: 2013/5/5 星期日 16:49 IP地址分配 IP地址为192.168.1.0/24 ,&#xff0c;根据本地网络的需求制定子网划分方案。要求如下&#xff1a; R2&#xff08;带有WIC-2T模块&#xff09;上开启环回接口loopback 0 地址为 192.168.X.20&#xff1b;R…