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].");

参考链接:

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

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

小编微信:mm1552923

公众号:dotNet编程大全

C# 日志管理框架:Common.Logging和log4net相关推荐

  1. 【C#】【Log】Common.Logging.MultipleLogger及ETWLoggerd研究

    common.logging是基于java语言的一个日志门面框架,是Apache基金会下的commons项目下的一个子项目,让你的日志脱离具体的实现. Commong.Logging是.NET下的日志 ...

  2. common.logging和log4j比较

    apache common logging是一种log的框架接口,它本身并不实现log记录的功能,而是在运行时动态查找目前存在的日志库,调用相关的日志函数,从而隐藏具体的日志实现 log4j是具体的日 ...

  3. 日志处理模块----logging

    文章目录 1.logging 模块简介 2.logging 模块使用 3.日志流处理流程 3.1Logger类: 3.2 Handler类 3.3 Formater类 3.4 Filter类 3.5 ...

  4. python处理日志_python日志处理(logging模块)

    文章非原创,搬运自@云游道士博客: 另外,这篇文章可以作为参考: 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用 ...

  5. Python之日志处理(logging模块)

    From: https://www.cnblogs.com/yyds/p/6901864.html 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 lo ...

  6. python日志模块_Python之日志处理(logging模块)

    转载自:https://www.cnblogs.com/yyds/p/6901864.html 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logg ...

  7. python log日志_Python中logging日志的四个等级和使用

    1. logging日志的介绍 在现实生活中,记录日志非常重要,比如:银行转账时会有转账记录:飞机飞行过程中,会有个黑盒子(飞行数据记录器)记录着飞机的飞行过程,那在咱们python程序中想要记录程序 ...

  8. Python之日志处理(logging模块)详解

    logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点 1.可以通过设置不同的 ...

  9. Android轻量级日志管理框架

    代码地址如下: http://www.demodashi.com/demo/12134.html ViseLog Android 轻量级日志框架,使用森林对象维护不同的日志树进行日志输出,可以是Log ...

最新文章

  1. 《经济学人》也谈 Python:它会是我们的未来吗?
  2. 使用OPENROWSET爆破SQL Server密码
  3. OpenUPF 的设备形态与架构设计
  4. ASM3.0学习(二)
  5. 博客园升级有感一点建议
  6. 使用js在桌面上写一个倒计时器_论一个倒计时器的性能优化之路
  7. mysql高级用法(函数)
  8. 如何避免循环中“突兀”的break和continue
  9. [系统安全] 十二.熊猫烧香病毒IDA和OD逆向分析(上)病毒初始化
  10. fat,uat,pre等环境含义
  11. lync前段服务器证书安装,Lync Server 2013企业版部署测试六:前端服务器安装Lync Server系统...
  12. python 去重方法
  13. qt调用simsimi api实现小黄鸡
  14. c语言乘方程序,C语言求幂计算的高效解法
  15. 你和语言模型,谁的填空能力更强?
  16. 每日一题---摔手机
  17. ubuntu20安装gdb插件gef的爬坑记录
  18. 简单的PHP测试页代码
  19. android singleTask
  20. C++手敲Roberts_Prewitt_Sobel实现阈值分割

热门文章

  1. 【Spring-AOP-学习笔记-3】@Before前向增强处理简单示例
  2. Hadoop 2.0 中的资源管理框架 - YARN(Yet Another Resource Negotiator)
  3. 查看某个端口是否链接超时
  4. java实现各种算法
  5. MFC中卡拉OK字体的定时器实现,使用DC的DrawText函数实现
  6. [转]Linux中如何自动启动服务
  7. 用jQuery实现弹出窗口/弹出div层
  8. 汉三水属国(北地属国、安定属国)
  9. C#合并文件夹图片列表 自定义排版顺序
  10. BFS HDOJ 2102 A计划