Log4net(二)-——关联配置文件的方式总结
关联配置文件的方式总结
以控制台应用程序为例,在.net mvc项目中默认的配置位置为Web.config,其他的配置都一样
1.配置在AppConfig中
在控制台应用程序中,如果我们把Log4net的配置放在App.config(App.config和Web.config是默认的位置)下,配置文件如下
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--申明一个名为"log4net"的自定义配置节-->
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<!--Log4net 开始-->
<log4net>
<!--以下示例显示如何配置ColoredConsoleAppender 以将消息记录到控制台。默认情况下,消息被发送到控制台标准输出流。此示例显示如何突出显示错误消息-->
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ERROR" />
<foreColor value="White" />
<backColor value="Red, HighIntensity" />
</mapping>
<mapping>
<level value="DEBUG" />
<backColor value="Green" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<!-- 设置根类别,添加appender并设置默认级别 -->
<root>
<level value="ALL"/>
<appender-ref ref="ColoredConsoleAppender" />
</root>
</log4net>
<!--Log4net 结束-->
</configuration>
我们可以有两种方法来关联配置文件,选择一种:
方式一:在 AssemblyInfo.cs 文件中添加关联代码
方式二:在命名空间上部添加关联代码
关联的代码为: [assembly: log4net.Config.XmlConfigurator(Watch = true)]
方式三:在程序入口使用代码关联,Console应用程序直接在Main函数第一行加上一行代码: log4net.Config.XmlConfigurator.Configure();
2.把配置文件放在Log4net.config
我么也可以在项目中新建一个Log4net.config文件,其内容和App.config中一样,包含ConfigSections和log4net两个节点,在方式一/二中,和上边的步骤一样,只需要我们把关联的代码改成: [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")] 即可。
在方式三中,因为配置不在默认位置,所以我们要指定配置文件的信息,Console应用程序直接在Main函数第一行加上一行代码: log4net.Config.XmlConfigurator.Configure(fileInfo);,fileInfo为配置文件信息,详见下边栗子。
3.一个栗子
配置文件采用的上边的,保存在Log4net.Config文件中,关联配置的方式采用第三种,直接上代码:
class Program
{
static void Main(string[] args)
{
//关联配置
System.IO.FileInfo fileInfo = new System.IO.FileInfo("Log4Net.config");//获取配置文件
//如果配置文件在App.config或者Web.config,不用查找配置文件,直接使用log4net.Config.XmlConfigurator.Configure()即可;
log4net.Config.XmlConfigurator.Configure(fileInfo);
Console.WriteLine("开始记录");
//获取一个ILog的实例
//myLogger为配置文件logger的name,如果没有logger节点,有root节点,代码中的"myLogger"可以为任意字符串,获取的都是默认的logger对象
ILog log = LogManager.GetLogger("myLogger");
log.Error("测试1", new Exception("这是一个Error"));
log.Warn("测试2", new Exception("这是一个Warn"));
log.Info("测试3", new Exception("这是一个Info"));
log.Debug("测试4", new Exception("这是一个Debug"));
log.Fatal("测试5", new Exception("这是一个Fatal"));
Console.ReadKey();
}
}
运行结果如下:

Log4net(二)-——关联配置文件的方式总结的更多相关文章
- Spring(二十):Spring AOP(四):基于配置文件的方式来配置 AOP
基于配置文件的方式来配置 AOP 前边三个章节<Spring(十七):Spring AOP(一):简介>.<Spring(十八):Spring AOP(二):通知(前置.后置.返回. ...
- Springboot 打jar包分离lib,配置文件正确方式(二)
Springboot 打jar包分离lib,配置文件正确方式(二) 背景 从<Springboot 打jar包分离lib,配置文件正确方式>中,可以达到把配置文件和依赖第三方的jar包分离 ...
- spring schedule定时任务(二):配置文件的方式
接着上一篇,这里使用spring配置文件的方式生成spring定时任务. 1.相应的web.xml没有什么变化,因此便不再罗列.同样的,相应的java代码业务逻辑改动也不大,只是在原来的基础上去掉@C ...
- scala读取jar包外配置文件的方式
在scala的开发过程中,经常会修改程序的参数,将这些参数放到配置文件中避免了重复编译,打包的过程 这里给出读取配置文件的三种方式 方式一: 这是最常见的读取配置文件方式 val postgprop ...
- 轻量级ORM框架 QX_Frame.Bantina(二、框架使用方式介绍)
轻量级ORM框架QX_Frame.Bantina系列讲解(开源) 一.框架简介 http://www.cnblogs.com/qixiaoyizhan/p/7417467.html 二.框架使用方式介 ...
- Ocelot简易教程(六)之重写配置文件存储方式并优化响应数据
本来这篇文章在昨天晚上就能发布的,悲剧的是写了两三千字的文章居然没保存,结果我懵逼了.今天重新来写这篇文章.今天我们就一起来探讨下如何重写Ocelot配置文件的存储方式以及获取方式. 作者:依乐祝 原 ...
- MyBatis 实用篇(二)配置文件
MyBatis 实用篇(二)配置文件 一.全局配置 全局配置:http://www.mybatis.org/mybatis-3/zh/configuration.html <?xml versi ...
- hibernate用配置文件的方式实现orm
本文主要讲用配置文件的方式讲如何把一个对象和数据库中的表关联起来,其实用配置文件本质是和用注解的方式是一样的. 思路:1.写一个domain对象(如Person.java) 2.写这个domain对象 ...
- flask 设置配置文件的方式
from flask import Flask from flask import current_app """ 配置参数设置与读取 """ ...
随机推荐
- 在Windows命令行中编译运行C/C++程序
此处运行环境是在Windos下,运行cmd命令进入DOS界面 现在有一段简单C++代码(文件名为 demo.cpp),用于计算a*b的值 #include<iostream> using ...
- Hadoop and net core a match made in docker
https://blog.sixeyed.com/hadoop-and-net-core-a-match-made-in-docker/
- ACDsee的安装过程
http://www.ddooo.com/softdown/76175.htm ACDSee 18中文版安装教程: 1.ACDSee 18分为32位和64位版本,我们先选择合适系统的中文版本开始安装, ...
- php 中instanceof的使用
转载:https://www.cnblogs.com/tengjian/p/7999107.html 作用:(1)判断一个对象是否是某个类的实例,(2)判断一个对象是否实现了某个接口. 第一种用法: ...
- python之random函数
# random各种使用方法 import random # 随机生成[0.1)的浮点数 print("random():", random.random()) # 随机生成100 ...
- js跨域请求jsonp解决方案-最简单的小demo
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...
- docker --alpine包管理工具 --apk
Alpine中软件安装包的名字可能会与其他发行版有所不同,可以在https://pkgs.alpinelinux.org/packages网站搜索并确定安装包的名称.如果需要的安装包不在主索引内,但是 ...
- BZOJ3834[Poi2014]Solar Panels——分块
题目描述 Having decided to invest in renewable energy, Byteasar started a solar panels factory. It appea ...
- MT【53】对数平均做数列放缩
[从最简单的做起]--波利亚 请看下面三道循序渐进不断加细的题. 评:随着右边的不断加细,解决问题的方法也越来越"高端".当然最佳值$ln2$我们可以用相对 容易的方法来证明: $ ...
- UOJ#192. 【UR #14】最强跳蚤
题目链接 http://uoj.ac/problem/192 暑期课第二天 树上问题进阶 具体内容看笔记博客吧 题意 n个节点的树T 边有边权w 求满足(u, v)上所有边权乘积为完全平方数的路径有多 ...