Log4net采用外部配置文件和多记录器的方法
1) 创建配置文件,可以放在任意位置,名字可以任意的xml文件
例如,文件名 Log.Config.xml,内容如下
<?xml version="1.0" encoding="utf-8"?>
<log4net name="DefaultLogger">
<root>
<level value="ALL"/>
</root>
<logger name="Doraemon.Hardware">
<appender-ref ref="HardwareLogger"/>
</logger>
<logger name="Doraemon.Software">
<appender-ref ref="UILogger"/>
</logger>
<!--硬件日志-->
<appender name="HardwareLogger" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\Hardware\" />
<param name="AppendToFile" value="true" />
<param name="rollingStyle" value="Date" />
<param name="datePattern" value="yyyy-MM-dd_'Log.txt'" />
<param name="staticLogFileName" value="false"/>
<param name="ImmediateFlush" value="true" />
<!-- 增加这个,可以立即写日志,好像不起作用 -->
| 
 这个模板,可以省略日期  | 
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[开始] "/>
<param name="Footer" value="[结尾] "/>
<!--
<param name="ConversionPattern" value="%d %-5p - %m%n" />
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
<param name="ConversionPattern" value="%d{HH:mm:ss,fff} [%t] %-5p %c [%x] - %m%n" />
-->
<param name="ConversionPattern" value="%d{HH:mm:ss,fff} %-5p - %m%n" />
</layout>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--使用最小锁定模型(minimal locking model),以允许多个进程可以写入同一个文件。 -->
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
<!-- WARN ERROR-->
</filter>
</appender>
<!--UI & Workflow日志-->
<appender name="UILogger" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\Software\" />
<param name="AppendToFile" value="true" />
<param name="rollingStyle" value="Date" />
<param name="datePattern" value="yyyy-MM-dd_'Log.txt'" />
<param name="staticLogFileName" value="false"/>
<param name="ImmediateFlush" value="true" />
<!-- 增加这个,可以立即写日志,好像不起作用 -->
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[开始] "/>
<param name="Footer" value="[结尾] "/>
<param name="ConversionPattern" value="%d{HH:mm:ss,fff} %-5p - %m%n" />
</layout>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--使用最小锁定模型(minimal locking model),以允许多个进程可以写入同一个文件。 -->
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
<!-- WARN ERROR-->
</filter>
</appender>
</log4net>
2) 程序入口,增加 Log4net 配置入口
/// 应用程序的主入口点。
/// </summary>
///
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//log4net.Config.XmlConfigurator.Configure( ); //为LOG4NET增加的,这个是 配置文件放在 app.config.xml的方式
System.IO.FileInfo fi = new System.IO.FileInfo(@"C:\Users\James\source\repos\WindowsFormsApp_log4net_多个_外部配置\bin\Debug\Log.Config.xml");
log4net.Config.XmlConfigurator.Configure(fi);
//或者
//XmlConfigurator.Configure(new System.IO.FileInfo(@"C:\Users\James\source\repos\WindowsFormsApp_log4net_多个_外部配置\bin\Debug\Log.Config.xml"););
Application.Run(new Form1());
| 
 与配置文件的 LogerName 关联  | 
3)      
增加静态的记录器
private static readonly ILog log = LogManager.GetLogger(@"Doraemon.Hardware");//@"Doraemon.UI");
begins by importing log4net related classes.
private static readonly ILog log2 = LogManager.GetLogger(@"Doraemon.Software");//@"Doraemon.UI");
begins by importing log4net related classes.
4)      
开始使用
log.Error("Log1");
log2.Error("log2");
Log4net采用外部配置文件和多记录器的方法的更多相关文章
- spark读取外部配置文件的方法
		
spark读取外部配置文件的方法 spark-submit --files /tmp/fileName /tmp/test.jar 使用spark提交时使用--files参数,spark会将将本地的 ...
 - 19、属性赋值-@PropertySource加载外部配置文件
		
19.属性赋值-@PropertySource加载外部配置文件 加载外部配置文件的注解 19.1 [xml] 在原先的xml 中需要 导入context:property-placeholder 声明 ...
 - SpringBoot常用配置,引入外部配置文件信息,热加载
		
SpringBoot的配置文件格式 yml规范 SpringBoot的配置文件支持properties和yml,甚至还支持json. 更推荐使用yml文件格式: yml文件,会根据换行和缩进帮助咱们管 ...
 - springboot加载外部配置文件
		
网上搜集和整理如下(自己已验证过) 1. war包在tomcat中加载外部配置文件 war包运行在独立tomcat下时,如何加载war包外部配置application.properties,以达到每次 ...
 - 通过外部配置文件做mybatis的基础配置,以及Mapper代理接口的实现
		
1.通过外部配置文件做mybatis的基础性的配置. 1)先编写config.properties的文件(做一些动态的配置). 配置的内容如下: jdbc.jdbcUrl=jdbc:oracle:th ...
 - 为什么要采用外部js文件
		
这篇文章主要讲的是为什么要采用外部js文件,有什么好处. 为什么不把js内嵌在html中呢,这样不是好分析吗?对,这样你是好分析,同样的别人呢?不内嵌在html中有如下原因: 安全性: 只要查看页 ...
 - Spring配置文件中如何使用外部配置文件配置数据库连接
		
直接在spring的配置文件中applicationContext.xml文件中配置数据库连接也可以,但是有个问题,需要在url后带着使用编码集和指定编码集,出现了如下问题,&这个符号报错-- ...
 - application.properties多环境配置文件、jar包外部配置文件、配置项加密、程序中配置使用
		
一.简介 spring boot项目application.properties文件存放及使用介绍 二.方法一多环境配置文件 我们一般都会有多个应用环境,开发环境.测试环境.生产环境,各个环境的配置会 ...
 - jar包读取jar包内部和外部的配置文件,springboot读取外部配置文件的方法
		
jar包读取jar包内部和外部的配置文件,springboot读取外部配置文件的方法 用系统属性System.getProperty("user.dir")获得执行命令的目录(网上 ...
 
随机推荐
- 重读APUE(8)-进程、进程组、会话
			
进程: 是系统中一段程序执行的实体,也是资源分配和调度的基本单位: 进程组: 为了方便管理多个进程,可以将多个进程加入到一个进程组内: 每个进程都属于一个进程组,但是同一个进程组内可以有多个进程: 每 ...
 - React的Virtual DOM厉害了
			
React 的伟大之处就在于,提出了Virtual DOM这种新颖的思路,并且这种思路衍生出了React Native,有可能会统一Web/Native开发. 在性能方面,由于用到了Virtual D ...
 - U盘exFAT格式转NTFS
			
先格式化成FAT或者FAT32(这个简单,右键格式化就成),然后点开始,运行,输入cmd,在里面输入: convert I:/fs:ntfs I是你U盘的字母(大写),完成
 - DELPHI安卓动态权限申请
			
DELPHI安卓动态权限申请 安卓8.0以前的版本,只需要给静态权限就可以了,但安卓8.0及以后的版本,还需要运行期用代码动态申请权限. 下面以<蓝牙权限>为例,其他权限类似. Delph ...
 - Vue篇之vue 使用Jade模板写html
			
// 安装jade包 npm install jade jade-loader --save-dev // 如果使用vue-cli构建项目,则不需要安装stylus相关的包,vue-cli默认已安装 ...
 - ERS:百科
			
ylbtech-ERS:百科 ERS=(Enterprises Run System)企业运行系统 企业运行系统-ERS,是继ERP系统之后的企业管理控制软件系统的终极形式,有着非常美好的市场前景,尤 ...
 - python3 枚举enum定义和使用
			
两种方式定义枚举类: 1.直接使用Enum列出多个枚举值来创建枚举类. 2.通过集成Enum基类派生枚举类. 程序示范: 1.直接使用Enum列出多个枚举值来创建枚举类. from enum impo ...
 - python之hashlib模块(MD5校验)
			
示例:大文件md5校验 def md5(fileMd5): import hashlib md5_value = hashlib.md5() with open(fileMd5,'rb') as f: ...
 - 搭建IIS CA DC Exchange TMG SQL (CA DC篇)
			
搭建IIS CA DC Exchange TMG SQL (CA DC篇) 步骤 1: 在“下一步(N) > (按下按钮)”(位于“添加角色向导”中)上用户左键单击 步骤 2: 在“Ac ...
 - 【Gstreamer开发】用 GStreamer 简化 Linux 多媒体开发
			
原文:http://www.ibm.com/developerworks/cn/linux/l-gstreamer/ 一.基本概念 GStreamer 作为 GNOME 桌面环境推荐的流媒体应用框架, ...