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编程大全

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
和console.debug有什么区别? console.log()、console.info()和console.debug()在功能上没有实质性的区别。它们都是用来在浏览器控制台上打印信息的。 三者的作用都是用于调试和输出信息,可以向控制台输出不同级别的信息。console.log()主要用于输出普通信息,console.info()主要用于输出一般信息,而console.debug()主要用于输出调试信息。但实际上,这些方法在不同浏览器和开发环境中的行为可能有所差异,所以在具体使用时需要根据实际情况选择合适的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [js console.log和console.info与console.debug的区别](https://blog.csdn.net/weixin_45677987/article/details/114730951)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [console.log()、console.info()、console.debug()的区别](https://blog.csdn.net/xishaoguo/article/details/80688179)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值