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 ...
随机推荐
- C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- three.js优化
Three js 开发的一些知识整理,方便后期遇到类似的问题,能够及时查阅使用. three.js 性能优化方面,整理一下常用的优化方法或者方向,供大家一个优化思考的方向 尽量重用Material和G ...
- C++ Builder 开发64程序 使用AnsiString的ToInt和ToDouble会内存泄漏
AnsiString str="adsfaga"; try { int v=str.ToInt(); } catch(...) { } 上面的代码,在C++ Builder 10 ...
- AFL-QBDI与AFL-Unicorn实战
文章一开始发表在微信公众号 https://mp.weixin.qq.com/s/wNeeuS3XojfZWvtAJ9xGlQ Fuzz Android Native库 为了能够Fuzz Androi ...
- 【处理元组有关的题型的技巧】codeforces 1677 A. Tokitsukaze and Strange Inequality
题意 第一行输入一个正整数 \(T(1 \leq T \leq 1000)\),代表共有 \(T\) 组测试用例,对于每组测试用例: 第一行输入一个正整数 \(n(4 \leq n \leq 5000 ...
- 内网穿透之http代理服务器
在公网访问内网http服务可以用内网穿透工具,例如frp和nps等优秀工具.但我发现这类工具会在服务器启动不止一个端口,对于有些网络审查来说很容易发现在进行内网穿透.因此我想是否可以只在服务器启动一个 ...
- HttpClientFactory in ASP.NET Core 2.1 Part 1 介绍
HttpClientFactory in ASP.NET Core 2.1 Part 1 原文地址:https://www.stevejgordon.co.uk/introduction-to-htt ...
- 断言、drf之请求与响应
目录 一.断言 二.drf之请求 2.1 Request能够解析的前端传入的编码格式 2.2 Request类有哪些属性和方法(学过) 常用参数 Response类的实例化参数 三.drf之响应 3. ...
- SpringBoot支持Kafka多源配置的同时还要支持启停配置化,是真的会玩
开心一刻 今早,女朋友给我发微信 她:宝贝,你要记住 她:我可是你女朋友,你相亲就亲,想抱就抱 她:不要老是问我,男生要主动一些 我:可是你上次报警可不是这么说的 基础回顾 Spring Boot 集 ...
- Mybatis-plus关于代码生成器的使用
1.添加依赖 2.在test包下创建一个CodeGet类,实现生成代码的功能.注意:全局配置.数据源配置一定要和自己的电脑配置一致! 3.执行CodeGet类中的main方法.打印台有如下图提示字样, ...