Common.Logging+log4net搭建项目日志框架
<?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" />
<?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搭建项目日志框架的更多相关文章
- 基于Common.Logging + Log4Net实现的日志管理
前言 Common.Logging 是Commons-Logging(apache最早提供的日志门面接口,提供了简单的日志实现以及日志解耦功能) 项目的.net版本.其目的是为 "所有的.n ...
- 使用Common.Logging+log4net规范日志管理
Common.Logging+(log4net/NLog/) common logging是一个通用日志接口,log4net是一个强大的具体实现,也可以用其它不同的实现,如EntLib的日志.NLog ...
- 使用Common.Logging+log4net规范日志管理【转载】
使用Common.Logging+log4net规范日志管理 Common.Logging+(log4net/NLog/) common logging是一个通用日志接口,log4net是一个强大 ...
- Common.Logging log4net Common.Logging.Log4Net 配置
1.log4net 单独配置 log4net支持多种格式的日志输出,我这里只配置输出到本地的txt文件这种格式. <log4net> <root> <appender-r ...
- .Net Core 商城微服务项目系列(十三):搭建Log4net+ELK+Kafka日志框架
之前是使用NLog直接将日志发送到了ELK,本篇将会使用Docker搭建ELK和kafka,同时替换NLog为Log4net. 一.搭建kafka 1.拉取镜像 //下载zookeeper docke ...
- Moon转告给你一个比Log4net更好日志框架--TracerX Logger 及其对应的日志查看器
一.介绍 TracerX logger是一个易于上手,且拥有众多高级特性的.NET日志框架. 它能够发送输出结果到多目的地(循环文件.事件日志等....).它也能生成文本和二进制文件.它拥有一个强大的 ...
- SpringCloud笔记二:搭建项目基础框架
目录 搭建框架 新建父工程 新建子工程api 新建子工程提供者provider 新建消费者consumer 总结 搭建框架 我们的SpringCloud微服务框架是父子工程,有一个父工程,剩下的都是子 ...
- asp.net core 集成 log4net 日志框架
asp.net core 集成 log4net 日志框架 Intro 在 asp.net core 中有些日志我们可能想输出到数据库或文件或elasticsearch等,如果不自己去实现一个 Logg ...
- 在C#应用中使用Common Logging日志接口
我在C#应用中一般使用log4net来记录日志,但如果项目中有个多个工程,那么没有工程都需要引用log4neg,感觉很不爽.不过今日在开spring.net的时候,看到了有个通用日志接口Common ...
- 使用Common.Logging与log4net的组件版本兼容问题
引用: http://www.cnblogs.com/shijun/p/3713830.html 近期使用了Common.Logging的ILog接口做日志接口,同时利用其log4net适配器与lo ...
随机推荐
- cve-2021-3156-sudo堆溢出简单分析
调试方式 首先从github下载代码 https://github.com/sudo-project/sudo/archive/SUDO_1_9_5p1.tar.gz 编译 tar xf sudo-S ...
- RHEL8安装docker
1,安装yum-utils和dnf-utils yum install -y yum-utils dnf-utils 2,添加源 docker官方源 yum-config-manager --add- ...
- PDFSharp - Graphics
PDFSharp - Graphics Graphics - PDFsharp and MigraDoc Wiki 所有的 Graphics 类型都设计成模仿来自 System.Drawing 命名空 ...
- Winform 使用WebView2 开发现代应用
使用 WebView2 开发现代应用 WebView2 是 Microsoft 提供的一种嵌入式浏览器控件,基于 Edge (Chromium) 引擎.它允许开发者将现代 Web 技术(如 HTML. ...
- vagrant 修改配置生效
vagrant reload --provision 起因 看 log 的时候以为写入错误,排查了几次才发现是系统时间不对,这里记录一下解决过程 手动同步时间 yum install ntpdate ...
- Qt/C++离线地图的加载和交互/可以离线使用/百度和天地图离线/支持手机上运行
一.前言说明 在地图应用中,有很多时候是需要断网环境中离线使用的,一般会采用两种做法,一种是只下载好离线瓦片地图,然后根据不同的缩放和经纬度坐标绘制瓦片.这种方式优点是任何地图都支持,只需要拿到瓦片即 ...
- 关于Qt高分屏缩放几个知识点
在windows上经常遇到高分屏缩放的问题,很头疼,貌似这东西就是windows首发的. 在Qt4时代的程序遇到高分屏缩放,不作任何处理,毕竟Qt4时代(2010年以前)出来的时候几乎还没高分屏缩放这 ...
- 《Spring Boot+Vue全栈开发实战-王松2018》一书pdf+源码下载
下载地址为: 链接:https://pan.baidu.com/s/18lnF2KemQTqkKaCRmMbvXA 提取码:1pie 版权声明:本书版权属于出版社和作者.仅学习使用,请于下载后24小时 ...
- kubernetes系列(十一) - 存储之configMap
1. configMap简介 1.1 configMap的典型用法 1.2 configMap的表现形式 2. configMap的创建方式 2.1 kubectl create命令行创建 2.1.1 ...
- .NET 异步 /Task
老版本的写法经常是以BeginXXX, EndXXX, 或者xx.xxxAsycn(........) 新的支持 async异步关键字配合Task可读性和易用性比老板好多了. 新旧例子: using ...