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,其它的几个库会自动作为依赖项目安装都程序集下,如下图
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为当前类名称
运行结果:
private static readonly Common.Logging.ILog logger = Common.Logging.LogManager.GetLogger<T>();
logger.Info($"Enter [this].");
logger.Info($"Leave [this].")
喜欢就来个三连,让更多人因你而受益
- EF Core 6 新功能汇总(一)
- C# 日志管理框架:Common.Logging和log4net
- c#屏幕录制(经典)(含源码和AForge.Video.FFMPEG.DLL)及填坑办法
- SSL泛域名证书申请和配置
- 关于async和await的探讨
- 值得永久收藏的 C# 设计模式套路(三)
- C# 线程的基本操作(一)
- C# 将多个图片合并成TIFF文件的两种方法(续集)
- C#索引器
- REST 深度进阶
- 再来说说我喜欢的 Dotnet 5.0 & C# 9
- 字符串池化的妙用
- Minimal API Todo Sample
- Dotnet 6.0,你值得拥有
- 递归优化的这三种方式你知道吗?
- C#基础知识之base、this、new、override、abstract梳理
- C# =>符号的使用
- 使用 ML.NET 进行保险价格预测
- dotnet中的counter
- 剖析依赖属性