Log4Net配置注意点

 

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

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

2.代码加载的方式

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

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

Log4Net配置注意点,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。