Apache log4net 配置的部分解释

log4net 其实可以使用 系统自带的 *.config 配置文件 来配置,也可以使用 其他配置文件 来配置。

这两种配置方式决定了 log4net 使用哪些方式来读取配置信息,从而也决定了一些特性。

log4net 用来读取配置文件的方式有两种,一种是 ASP.NET 的 System.Configuration API另一种是 log4net 的 log4net.Config.XmlConfigurator


那么他们的区别在哪里呢?

System.Configuration API:

1、只能使用系统自带的 *.config 配置文件来配置(WinForm 是 XXX.exe.config,WebForm 是 web.config)。

(「因为 System.Configuration API 不能重新加载配置文件」,此乃英文文档的直译,我估计他的意思是,配置文件只能从系统自带的 *.config 配置文件一次性读取,不能进行二次读取,所以就不能使用其他配置文件来配置了,就算配置了也读取不了。)

2、不能监控配置文件的变动。意思就是,你的程序一旦运行着,你修改配置文件(比如:由写入文本文件改为写入数据库)是没有作用的。

(这点可以从上面一点的解释那里可以知道,因为 System.Configuration API 不能重新加载配置文件。)

3、读取配置权限跟着 ASP.NET 或者 IIS,所以配置应用程序权限的时候,完全不用担心配置文件的权限问题。


log4net.Config.XmlConfigurator:

1、与上面相反,可以使用系统自带的 *.config 配置文件来配置,也可以使用其他配置文件来配置。

2、与上面相反,可以进行监控,有改动立马生效。

3、与上面相反,绝对要搞清楚程序是否有权限读取文件。

那两种方式应该怎么配置呢?

System.Configuration API:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <configuration>
 3     <configSections>
 4         <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
 5         <!--这一段很重要,它的意思就是,下面 log4net 这一个 section 使用后面这个程序来处理,这个程序其实就是调用 System.Configuration API,所以声明这一段就是代表使用 System.Configuration API。-->
 6     </configSections>
 7     <log4net>
 8         <!--这里是一些具体配置-->
 9     </log4net>
10 </configuration>
web.config
 1 [XmlConfigurator]
 2 //[XmlConfigurator(ConfigFile = "xxx.config")] //不可用。
 3 //[XmlConfigurator(ConfigFileExtension = "config")] //不可用。
 4 //[XmlConfigurator(Watch = true)] //不可用。
 5 class Program
 6 {
 7     static void Main(string[] args)
 8     {
 9         //下面这两个可用,二选一。
10         XmlConfigurator.Configure();//这一条等同于 [XmlConfigurator]。
11         XmlConfigurator.Configure(log4net.LogManager.GetRepository("DEBUG"));
12 
13         //下面这个是不可用的。
14         //XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(@"~\xxx.config")); //不可用。
15     }
16 }
Log4netDemo.cs


log4net.Config.XmlConfigurator:

1、使用其他配置文件配置。

如果使用其他配置文件来配置的话,那么系统自带的 *.config 配置文件就不用添加任何东西,直接新建一个配置文件(比如:xxx.config),里面只要有 log4net 这个 section 就可以。

1 <?xml version="1.0" encoding="utf-8"?>
2 <log4net>
3     <!--这里是一些具体配置-->
4 </log4net>
xxx.config

2、使用系统自带的 *.config 配置文件配置。

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <configuration>
 3     <configSections>
 4         <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
 5         <!--因为这是系统的配置文件,所以里面的每个 section 都要正确,但是下面 log4net 对于系统来说是不正确的,如果不写这一段会报错,这一段的意思是忽略 log4net 这个 section 的意思。-->
 6     </configSections>
 7     <log4net>
 8         <!--这里是一些具体配置-->
 9     </log4net>
10 </configuration>
web.config
 1 //下面的都可用。
 2 [XmlConfigurator]//使用系统自带的 *.config 配置文件。
 3 [XmlConfigurator(ConfigFile = "xxx.config")]//使用其他配置文件配置。
 4 [XmlConfigurator(ConfigFileExtension = "config")]//使用其他配置文件配置。
 5 [XmlConfigurator(Watch = true)]//监控配置文件。
 6 class Program
 7 {
 8     static void Main(string[] args)
 9     {
10         //下面的都可用。
11         XmlConfigurator.Configure();//这一条等同于 [XmlConfigurator] 声明。
12         XmlConfigurator.Configure(log4net.LogManager.GetRepository("DEBUG"));
13 
14         XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(@"~\xxx.config"));//这一条等同于 [XmlConfigurator(ConfigFile = "xxx.config", Watch = true)] 声明。
15     }
16 }
Log4netDemo.cs


上面这些代码只是一种展示,里面的语法是错误的,应该完全理解之后,结合自己的项目进行配搭。

Apache log4net 配置的部分解释,古老的榕树,5-wow.com

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