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采用外部配置文件和多记录器的方法的更多相关文章

  1. spark读取外部配置文件的方法

    spark读取外部配置文件的方法 spark-submit  --files /tmp/fileName /tmp/test.jar 使用spark提交时使用--files参数,spark会将将本地的 ...

  2. 19、属性赋值-@PropertySource加载外部配置文件

    19.属性赋值-@PropertySource加载外部配置文件 加载外部配置文件的注解 19.1 [xml] 在原先的xml 中需要 导入context:property-placeholder 声明 ...

  3. SpringBoot常用配置,引入外部配置文件信息,热加载

    SpringBoot的配置文件格式 yml规范 SpringBoot的配置文件支持properties和yml,甚至还支持json. 更推荐使用yml文件格式: yml文件,会根据换行和缩进帮助咱们管 ...

  4. springboot加载外部配置文件

    网上搜集和整理如下(自己已验证过) 1. war包在tomcat中加载外部配置文件 war包运行在独立tomcat下时,如何加载war包外部配置application.properties,以达到每次 ...

  5. 通过外部配置文件做mybatis的基础配置,以及Mapper代理接口的实现

    1.通过外部配置文件做mybatis的基础性的配置. 1)先编写config.properties的文件(做一些动态的配置). 配置的内容如下: jdbc.jdbcUrl=jdbc:oracle:th ...

  6. 为什么要采用外部js文件

    这篇文章主要讲的是为什么要采用外部js文件,有什么好处. 为什么不把js内嵌在html中呢,这样不是好分析吗?对,这样你是好分析,同样的别人呢?不内嵌在html中有如下原因:   安全性: 只要查看页 ...

  7. Spring配置文件中如何使用外部配置文件配置数据库连接

    直接在spring的配置文件中applicationContext.xml文件中配置数据库连接也可以,但是有个问题,需要在url后带着使用编码集和指定编码集,出现了如下问题,&这个符号报错-- ...

  8. application.properties多环境配置文件、jar包外部配置文件、配置项加密、程序中配置使用

    一.简介 spring boot项目application.properties文件存放及使用介绍 二.方法一多环境配置文件 我们一般都会有多个应用环境,开发环境.测试环境.生产环境,各个环境的配置会 ...

  9. jar包读取jar包内部和外部的配置文件,springboot读取外部配置文件的方法

    jar包读取jar包内部和外部的配置文件,springboot读取外部配置文件的方法 用系统属性System.getProperty("user.dir")获得执行命令的目录(网上 ...

随机推荐

  1. spring boot jpa-java.lang.IllegalArgumentException: Not a managed type异常问题解决方法

    JPA实体类没有被扫描到,导致这样的情况有以下几种可能: 实体类没有加上@Entity注解 对应解决方法在实体类上加上@Entity即可解决问题 没有按照SpringBoot的约定,默认扫描(appl ...

  2. the requested PHP extension dom is missing from your system

    composer  出错 the requested PHP extension dom is missing from your system 解决办法    yum install  php70w ...

  3. 17 Flutter仿京东商城项目 保存历史搜索记录 删除历史记录 清空历史记录 长按删除

    Storage.dart import 'package:shared_preferences/shared_preferences.dart'; class Storage{ static Futu ...

  4. windows注册服务

    Windows服务是运行一些服务程序的较好方式(这些程序专门为各种功能提供服务,无操作界面,运行在后台),其创建方法也很简单,通过系统自带的sc命令即可方便的创建. sc命令创建Windows服务的方 ...

  5. [Tensorflow] 使用 tf.train.Checkpoint() 保存 / 加载 keras subclassed model

    在 subclassed_model.py 中,通过对 tf.keras.Model 进行子类化,设计了两个自定义模型. import tensorflow as tf tf.enable_eager ...

  6. PJzhang:目录扫描复合工具dirmap

    猫宁!!! 参考:https://www.freebuf.com/sectool/200890.html github地址: https://github.com/H4ckForJob/dirmap ...

  7. 《剑指offer》Q01-12 (牛客10.11)

    目录 T1 二维部分有序数组查找 ☆ T2 字符串字符不等长替换 - 从后往前 T3 返回链表的反序 vector T4 重建二叉树 T5 两个栈模拟队列 T6 旋转数组中的最小元素 - 二分或暴力 ...

  8. GRU网络

    1.GRU(Gated Recurrent Unit) 为了克服RNN无法远距离依赖而提出了LSTM,而GRU是LSTM的一个变体,GRU保持LSTM效果的同时,又使结构变得简单. 2.GRU结构 G ...

  9. Spring-Boot的第三方类库的依赖版本调整方法

    springboot方式构建的工程,是dependencyManagement方式进行依赖包的版本管理, spring中有默认的版本,可以修改ext参数来调整版本 如下SpringBoot-2.2.x ...

  10. 编写一个自定义事件类,包含on/off/emit/once方法

    function Event() { this._events = {}; } Event.prototype.on = function(type, fn) { if (!this._events[ ...