I坐标

博客园 首页 新随笔 联系 订阅 管理

在开始使用log4net之前,你需要加热你的log4net引擎。呵呵,技术上就是配置前面说过的三个组件:
Logger,Appender,Layout。有两种配置方式,一个是通过配置文件,另一个就是在程序代码中配置。

log4net的帮助文件推荐使用配置文件配置log4net。有两个理由:
1、你能随时修改配置而无需编译程序;
2、你能在运行时修改配置,这对于Web应用程序和远程通讯程序非常重要。


使用配置文件

log4net框架会尝试在应用程序的BaseDirectory指向的目录中查找配置文件,即在AppDomain.CurrentDomain.BaseDirectory的位置上查找。而log4net查找的唯一目标就是在配置文件中的<log4net>标志出的XML内容。
一个完整的配置文件如下:

 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  
<configSections>
    
<section name="log4net" 
      type
="log4net.Config.Log4NetConfigurationSectionHandler,
            log4net-net-1.0"
 
    
/>
  
</configSections>

  
<log4net>
    
    
<logger name="testApp.Logging">
      
<level value="DEBUG"/>
    
</logger>
    
    
<root>
      
<level value="WARN" />
      
<appender-ref ref="LogFileAppender" />
      
<appender-ref ref="ConsoleAppender" />
    
</root>
    
    
<appender name="LogFileAppender" 
             type
="log4net.Appender.FileAppender" >
      
<param name="File" value="log-file.txt" />
      
<param name="AppendToFile" value="true" />
      
<layout type="log4net.Layout.PatternLayout">
        
<param name="Header" value="[Header] "/>
        
<param name="Footer" value="[Footer] "/>
        
<param name="ConversionPattern" 
           value
="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n"
         
/>
      
</layout>
      
<filter type="log4net.Filter.LevelRangeFilter">
        
<param name="LevelMin" value="DEBUG" />
        
<param name="LevelMax" value="WARN" />
      
</filter>
    
</appender>
    
    
<appender name="ConsoleAppender" 
              type
="log4net.Appender.ConsoleAppender" >
      
<layout type="log4net.Layout.PatternLayout">
        
<param name="ConversionPattern" 
           value
="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n" 
        
/>
      
</layout>
    
</appender>
    
  
</log4net>
</configuration>



你可以直接把上面的配置文件复制到XML文件中,直接作为你的应用的配置文件。不过,我们还是需要多了解一些那些东西构成了配置文件。

/configuration/configSection/section 这个项有点特殊,如果你使用的是.net的应用配置文件,那么这个项必须出现,如果你使用的自定义的配置文件,那么这个项可以是不要的,自定义的配置文件只需要<log4net>这个项。

接下来看看/configuration/log4net这个项,这个是最主要的,也就是log4net框架要寻找的东西。

<logger>


正如前面的文章所说的,这里配置的正是Logger所需要的东西。

@name:
从上面的配置中可以看出logger[@name]="testApp.Loggin",那么在程序中通过调用LogManager.GetLogger("testApp.Loggin")可以在任何地方得到同一个Logger。

logger/level[@value]:
logger/level[@value]="DEBUG"说明Logger的Level是DEBUG。

logger/appender-ref[@ref]="LogFileAppender"以及logger/appender-ref[@ref]="ConsoleAppender":
这两个项正如前面的文章所说的,一个Logger可以有多个Appender用于将消息输出到不同的地方。这里appender-ref表明Logger引用下面配置的Appender。

<root>



我们知道,Logger是通过类似命名空间的层次结构命名和管理的,也如前面的文章所说,每一个应用中的Logger都有一个Root Logger,也就是默认Logger,<root>项就是用于定义Root Logger的。但是,<root>项并不是必须的,因为<root>项只有在配置文件中没有配置任何Logger的时候才起作用,此时,log4net将使用<root>项的配置作为创建一个Logger时的默认配置。所以,在这个例子里,因为上面已经配置了<logger>,所以<root>并不起作用,放在这里只是为了做一个完整的配置说明。

但是,需要注意的是,<root>并非完全不起作用。如果我们在代码中使用了LogManager.GetLog(...),其中的参数指定了一个不在配置文件中的Logger的@name时,那么log4net将会把<root>作为默认Logger,并依据<root>的配置创建一个Logger。

<appender>



前面<logger>或<root>所引用的appender-ref将配置在这里。

@name:
指定了Appender的名称。
@type
指定了Appender的类的全名。这里使用的log4net提供的log4net.Appender.FileAppender。

<appender>下面的参数,不同的Appender使用不同的参数,这些参数可以在log4net的帮助文档中找到,这里就不多说了。下面就是log4net的组件层的最后一层Layout。

<layout>



如前所说,layout定义了输出风格。这里使用了log4net提供的layout组件:log4net.Layout.PatternLayout,这个值由@type指定。同样的,不同的layout也有不同的参数,这些都需要做一些设定,关于layout的参数,在Log4net的配置文件中也有说明,这里也不多说了。

Appender Filter

不过,到这里配置文件还没有结束,我们还需要为Appender Filter做一些配置。
Appender Filter定义了那些消息才需要输出到layout。这个例子中,定义了在最大值WARN和最小值DEBUG之间的消息才会被传递到layout。关于不同的Filter,在帮助文档中都可以找到。

posted on 2004-10-06 14:04  I坐标  阅读(2448)  评论(1编辑  收藏  举报