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