Common.Logging+(log4net/NLog/)
common logging是一个通用日志接口,log4net是一个强大的具体实现,也可以用其它不同的实现,如EntLib的日志、NLog等。
Common.Logging可以通过修改配置,更换不同的日志实现类,而不需要修改任何代码。
 
.net 项目使用CommonLogging:
1、添加必要的程序集:Common.Logging.dll、Common.Logging.Core.dll、Common.Logging.log4net1215.dll、log4net.dll
其中需要特别注意Common.Logging.log4net1215.dll、log4net.dll的版本必须匹配,建议使用VS的NuGet添加引用,添加时有详细的说明。
2、写配置文件
<?xml version="1.0" encoding="utf-8" ?>
<factoryAdapter>
<!-- choices are INLINE, FILE, FILE-WATCH, EXTERNAL-->
<!-- otherwise BasicConfigurer.Configure is used -->
<!-- log4net configuration file is specified with key configFile-->
<arg key="configType" value="FILE-WATCH" />
<arg key="configFile" value="~/Config/Log4Net.xml" />
<!--与主程序共用日志文件,则传true,日志初始化时不创建目录结构,只构造几个Logger实例-->
<arg key="shareLogFile" value="true" />
<arg key="regenerateConfigFile" value="false" />
<!-- 0 to 6 (1 Debug 4 Error)-->
<arg key="Level" value="4" />
</factoryAdapter> <sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup> <common>
<logging>
<!--<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1213">-->
<factoryAdapter type="M2SH.Common.Utilities.Logs.EHLog4NetLoggerFactoryAdapter, M2SH.Common">
<!-- choices are INLINE, FILE, FILE-WATCH, EXTERNAL-->
<!-- otherwise BasicConfigurer.Configure is used -->
<!-- log4net configuration file is specified with key configFile-->
<arg key="configType" value="FILE-WATCH" />
<arg key="configFile" value="~/Config/Log4Net.xml" />
<arg key="regenerateConfigFile" value="true" />
<!-- 0 to 6 (1 Debug 4 Error)-->
<arg key="Level" value="4" />
</factoryAdapter>
</logging>
</common>

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

<arg key="configFile" value="~/log4net.config" />
以上配置表示将log4net的配置放到单独的文件中
 
<!--<arg key="configType" value="INLINE" />-->
这个表示log4net的配置直接写在配置文件里
log4net.config文件的内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="false"> <appender name="AspNetTraceAppender" type="log4net.Appender.AspNetTraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%thread] %-5level - %message" />
</layout>
</appender> <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file>Logs/{0}/Sys/sys</file>
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd.'log'" />
<maxSizeRollBackups value="2" />
<maximumFileSize value="5M" />
<!--最小锁定模型以允许多个进程可以写入同一个文件-->
<!--<lockingModel value="log4net.Appender.FileAppender.MinimalLock"/>-->
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date |[%thread] |%-5level |%logger |%message%newline" />
</layout>
</appender> <appender name="RollingFileAppenderBiz" type="log4net.Appender.RollingFileAppender">
<file>Logs/{0}/Biz/biz</file>
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd.'log'" />
<maxSizeRollBackups value="2" />
<maximumFileSize value="5M" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="!!! %date |[%thread] |%-5level |%message%newline" />
</layout>
</appender> <appender name="RollingFileAppenderNetReq" type="log4net.Appender.RollingFileAppender">
<file>Logs/{0}/NetReq/netreq</file>
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd.'log'" />
<maxSizeRollBackups value="2" />
<maximumFileSize value="5M" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="!!! %date |[%thread] |%-5level |%message%newline" />
</layout>
</appender> <appender name="TraceAppender" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5level %M - %message%newline" />
</layout>
</appender> <appender name="MemoryAppender" type="log4net.Appender.MemoryAppender">
<!-- simple appender to get results to UI -->
</appender> <!-- Set default logging level to DEBUG -->
<root>
<level value="DEBUG" />
<appender-ref ref="TraceAppender" />
<appender-ref ref="RollingFileAppender" />
</root>
<!--业务日志-->
<logger name="BizLogger" additivity="false">
<level value="Info" />
<appender-ref ref="RollingFileAppenderBiz" />
</logger> <!--网络请求日志-->
<logger name="NetReqLogger" additivity="false">
<level value="DEBUG" />
<appender-ref ref="RollingFileAppenderNetReq" />
</logger>
</log4net>

配置文件中定义了 AspNetTraceAppender,RollingFileAppender,RollingFileAppenderBiz,RollingFileAppenderNetReq,TraceAppender,MemoryAppender六个日志记录器。

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

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

两个logger(注:只有配置了 appender 的logger 才会输出日志内容)

  <!--业务日志-->
<logger name="BizLogger" additivity="false">
<level value="Info" />
<appender-ref ref="RollingFileAppenderBiz" />
</logger> <!--网络请求日志-->
<logger name="NetReqLogger" additivity="false">
<level value="DEBUG" />
<appender-ref ref="RollingFileAppenderNetReq" />
</logger>

附加器的配置要点:

1、name="DefaultRollingLogFileAppender"
定义附加器的名称,方便日志记录器调用
2、type="log4net.Appender.RollingFileAppender, log4net"
附加器的类型,附加器的具体实现类,log4net提供多种日志存储(附加)方式,在这里就是不同的附加器实现类。
详细的附加器类型可以查看官方文档中的appender章节:
http://logging.apache.org/log4net/release/manual/introduction.html

 

Common.Logging+log4net搭建项目日志框架的更多相关文章

  1. 基于Common.Logging + Log4Net实现的日志管理

    前言 Common.Logging 是Commons-Logging(apache最早提供的日志门面接口,提供了简单的日志实现以及日志解耦功能) 项目的.net版本.其目的是为 "所有的.n ...

  2. 使用Common.Logging+log4net规范日志管理

    Common.Logging+(log4net/NLog/) common logging是一个通用日志接口,log4net是一个强大的具体实现,也可以用其它不同的实现,如EntLib的日志.NLog ...

  3. 使用Common.Logging+log4net规范日志管理【转载】

    使用Common.Logging+log4net规范日志管理   Common.Logging+(log4net/NLog/) common logging是一个通用日志接口,log4net是一个强大 ...

  4. Common.Logging log4net Common.Logging.Log4Net 配置

    1.log4net 单独配置 log4net支持多种格式的日志输出,我这里只配置输出到本地的txt文件这种格式. <log4net> <root> <appender-r ...

  5. .Net Core 商城微服务项目系列(十三):搭建Log4net+ELK+Kafka日志框架

    之前是使用NLog直接将日志发送到了ELK,本篇将会使用Docker搭建ELK和kafka,同时替换NLog为Log4net. 一.搭建kafka 1.拉取镜像 //下载zookeeper docke ...

  6. Moon转告给你一个比Log4net更好日志框架--TracerX Logger 及其对应的日志查看器

    一.介绍 TracerX logger是一个易于上手,且拥有众多高级特性的.NET日志框架. 它能够发送输出结果到多目的地(循环文件.事件日志等....).它也能生成文本和二进制文件.它拥有一个强大的 ...

  7. SpringCloud笔记二:搭建项目基础框架

    目录 搭建框架 新建父工程 新建子工程api 新建子工程提供者provider 新建消费者consumer 总结 搭建框架 我们的SpringCloud微服务框架是父子工程,有一个父工程,剩下的都是子 ...

  8. asp.net core 集成 log4net 日志框架

    asp.net core 集成 log4net 日志框架 Intro 在 asp.net core 中有些日志我们可能想输出到数据库或文件或elasticsearch等,如果不自己去实现一个 Logg ...

  9. 在C#应用中使用Common Logging日志接口

    我在C#应用中一般使用log4net来记录日志,但如果项目中有个多个工程,那么没有工程都需要引用log4neg,感觉很不爽.不过今日在开spring.net的时候,看到了有个通用日志接口Common ...

  10. 使用Common.Logging与log4net的组件版本兼容问题

    引用:  http://www.cnblogs.com/shijun/p/3713830.html 近期使用了Common.Logging的ILog接口做日志接口,同时利用其log4net适配器与lo ...

随机推荐

  1. jsp移动端和pc端页面判断及切换

    function goPAGE() { if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobi ...

  2. QEMU固件模拟技术-stm32仿真分析及IRQ仿真实践

    文章首发于 https://forum.butian.net/share/124 概述 上一篇文件介绍了luaqemu的实现,也提到luaqemu并没有对中断相关api进行封装,本节主要基于stm32 ...

  3. Qt数据库应用10-通用数据库设置

    一.前言 做过了众多的项目,只要是用了数据库的项目,基本上还有一个需求就是,提供一个界面用来初始化数据库,相当于恢复出厂设置的数据,一般恢复出厂设置需要复位的是配置文件.数据库文件.布局文件这几种,其 ...

  4. Qt编写的项目作品4-输入法V2019

    一.功能特点 未采用Qt系统层输入法框架,独创输入切换机制. 纯QWidget编写,支持任何目标平台(亲测windows.linux.嵌入式linux等),支持任意Qt版本(亲测Qt4.6.0到Qt5 ...

  5. Qt通用方法及类库7

    函数名 //int转字节数组 static QByteArray intToByte(int i); static QByteArray intToByteRec(int i); //字节数组转int ...

  6. OGC——WFS服务

    一.WFS简介    OGC的WMS和WMTS规范都是有关空间数据显示的标准,而WFS(Web Feature Service)则允许用户在分布式的环境下通过HTTP对空间数据进行增.删.改.查. 具 ...

  7. 阿里IM技术分享(六):闲鱼亿级IM消息系统的离线推送到达率优化

    本文由阿里闲鱼技术团队逸昂分享,原题"消息链路优化之弱感知链路优化",有修订和改动,感谢作者的分享. 1.引言 闲鱼的IM消息系统作为买家与卖家的沟通工具,增进理解.促进信任,对闲 ...

  8. Linux安装配置Go语言

    Linux安装配置Go语言 官网:https://go.dev/dl/ 从官网下载,选择linux下载压缩包. sudo cp -r go/ /usr/local sudo gedit /etc/pr ...

  9. Solution Set -「NOIP Simu.」20221008

    \(\mathscr{A}\sim\)「CF 1680E」Moving Chips   Link & Submission.   Tag:「水题无 tag」   温暖签到惹, DP 一下就好了 ...

  10. CDS标准视图:维护通知任务数据 I_MaintNotificationTaskData

    视图名称:维护通知任务数据 I_MaintNotificationTaskData 视图类型:基础 视图代码:IW67/IW23 点击查看代码 @AbapCatalog.sqlViewName: 'I ...