log4Net的配置文章一搜一大把,配置使用还是有一些点花费了很多时间,这里整理一下,添上坑,让Developer走的更稳。

编程式配置路径

新建一个配置文件,通过写代码来动态加载log4Net的配置文件。

class Program
{
    static void Main(string[] args)
    {
        log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Environment.CurrentDirectory + @"\" + "Log4Net.config"));
        ILog logger = LogManager.GetLogger("loggerAX");
        //logger.IsDebugEnabled
        logger.Warn("Test Logger");
    }
}

两点:

1. 就是在载入log的时候,路径需要小心,要么是将文件属性配置为复制到到编译路径(Copy always);如果不配置文件“copy always”,就需要调整加载的路径,使之能够加载到文件;Environment.CurrentDirectory 返回的是Debug或者release路径。

2.加载方式为:

log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Environment.CurrentDirectory + @"\" + "Log4Net.config"));

系统配置文件配置

所谓系统配置文件就是利用C#中固有的配置文件(web.config,app.config)来进行配置,而不是新建一个配置文件。

<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"></section>
</configSections>
<log4net>
<root name="loggerAX">
</configuration>

代码如下:

[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace MonitorTester
{
class Program
{
static void Main(string[] args)
{
ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
       logger.Error("Test Logger");
}
}
}

两点需要注意一下:

1.添加声明,如果没有这个声明,log对象返回的各个级别(DEBUG~OFF)都将是false;另外你在什么哪个类里面调用“LogManager.GetLogger()”,就在那个类的namespace上面添加这个声明。

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

2.代码加载的方式

ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

Log4Net的输出模式

  1. log4X是可以打印出函数名称的,打印模式%M就是输出函数名称;这样其实就不需要自己封装底层函数来获取当前函数名称;但是有一点:不能对log4x进行封装了,因为log4x默认输出方法名称是调用ILog接口的第一层函数,封装一层(loggerMan)将会导致%M取得是loggerMan的函数名称;
  2. 在配置模式匹配的时候,如果想要添加单词,可以直接写,模式匹配是以%开始,空格结束的,所以%前面的字母会被原封不动的保留下来:%d %p [TID: %t] %c(Line:%L) - [%M]%n

注:%d:日期;%p:优先级(INFO/debug/warning);%T:进程号;%L:打印发生时类文件的行数;%n:换行

以上,是配置log4Net的关注点;但是为什么不使用Enterprise Library里面的logger呢?还有可视化工具帮助配置。log4Net的优势就是小巧,需要引入就是一个dll。但是对于EL而言,关联引用的dll就是一堆了。所以如果项目中成套使用EL,那么logger还是使用EL的,否则的化,使用小巧轻便的log4Net吧。

Log4Net配置注意点的更多相关文章

  1. Common.Logging log4net Common.Logging.Log4Net 配置

    1.log4net 单独配置 log4net支持多种格式的日志输出,我这里只配置输出到本地的txt文件这种格式. <log4net> <root> <appender-r ...

  2. Log4Net 配置StmpAppender

    目录 Log4Net 配置StmpAppender    1 1.前言    1 2.详细配置    1 1.StmpAppender配置    1 2.Root 配置    2 3.更多选项     ...

  3. C# Log4Net配置

    Log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件.数据库.EventLog等),日志就是程序的黑匣子,可以通过日志查看系统的运行过程,从而发现系统的问题.日志的作用:将运 ...

  4. Log4net配置与使用简要说明

    log4net详细配置:http://logging.apache.org/log4net/本文描述如有错误,以官网的说明为准;p 一:先来看看log4net中的几个概念: 1. log4net继承机 ...

  5. MVC Log4Net 配置

    1.引用log4net.dll 2.在项目根目录下增加log4.config文件 <?xml version="1.0"?> <configuration> ...

  6. ASP.NET MVC学习之Log4Net配置(日志记录)

    Log4Net配置笔记---- 首先,添加对log4net.dll的引用. 在Web.config文件下的Configuration节点下添加Log4Net的配置信息: <!--Log4Net配 ...

  7. C# 日志系统 log4net 配置及使用

    1.引用Dll 版本是:1.2.10.0,下载Dll 2.Web.config文件配置 <?xml version="1.0" encoding="utf-8&qu ...

  8. JWT+Log4net配置与使用

    Log4net的优点        log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.程序运行过 ...

  9. log Log4NET配置

    Log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件.数据库.EventLog等),日志就是程序的黑匣子,可以通过 日志查看系统的运行过程,从而发现系统的问题.日志的作用:将 ...

  10. NHibernate的调试技巧和Log4Net配置

    1.查看nhibernate写在控制台里的sql语句 在配置文件中有这么个选项,假如把它设置为true,nhibernate会把执行的sql显示在控制台上. <property name=&qu ...

随机推荐

  1. Spring Aop实现方式总结

    前面两个文章介绍了Aop及其相关重要概念,下面主要用代码的方式介绍下实现Spring Aop的几种方式 1. 基于注解实现Spring Aop 业务类接口 package cn.test.busine ...

  2. JAVA向文件中追加内容(转)

    向文件尾加入内容有多种方法,常见的方法有两种: RandomAccessFile类可以实现随机访问文件的功能,可以以读写方式打开文件夹的输出流 public void seek(long pos)可以 ...

  3. android 59 LinearLayout 线性布局

    ##常见的布局* LinearLayout 线性布局线性布局往左右拉是拉不动的,> 线性布局的朝向 vertical|horizontal> 线性布局的权重 weight 和 0dip一起 ...

  4. pcap的pcap_dump()保存的文件格式

    (2009-09-01 20:36:49) 转载▼ 标签: 杂谈 分类: 专业 首先是tcpdump文件格式 当你在Windows或者Linux环境下用tcpdump命令抓取数据包时,你将得到如下格式 ...

  5. PCAP 抓包

    PCAP是一个数据包抓取库, 很多软件都是用它来作为数据包抓取工具的. WireShark也是用PCAP库来抓取数据包的.PCAP抓取出来的数据包并不是原始的网络字节流,而是对其进行从新组装,形成一种 ...

  6. Android BLE开发——Android手机与BLE终端通信初识

    蓝牙BLE官方Demo下载地址:   http://download.csdn.net/detail/lqw770737185/8116019参考博客地址:    http://www.eoeandr ...

  7. Android开发之Toast解析

    Toast是Android系统提供的一个显示消息提示的类,它的使用非常简单,用途很广,如软件的升级,可以用它进行提示:退出程序时,也可以用它进行提醒,输入限制的提醒,等等. 使用场景: 1.需要提示用 ...

  8. Linux ssh/scp连接时避免输入yes(公钥验证)并防止出现POSSIBLE BREAK-IN ATTEM

    方法一:连接时加入StrictHostKeyChecking=no ssh -o StrictHostKeyChecking=no root@192.168.1.100 方法二:修改/etc/ssh/ ...

  9. SQL语句中格式化时间

    给数据库中的字段格式化(): to_char(CREATETIME,'yyyy-MM-dd') 给程序中的字段格式化(InTime为数据库字段): InTime = to_date( '" ...

  10. div随另一个div自动增高

    <script type="text/javascript"> document.getElementById("div1").style.heig ...