国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Apachelog4net™手冊(cè)——介紹【翻譯】

2019-11-14 15:57:32
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

原文地址

本文內(nèi)容

  • 配置
  • 配置屬性
  • 應(yīng)用程序 appSettings
  • 配置文件
  • 配置語(yǔ)法
  • 追加器(Appenders)
  • 篩選器(Filters)
  • 布局(Layouts)
  • 根記錄器(Root Logger)
  • 記錄器(Loggers)
  • 渲染(Renderers)
  • 參數(shù)(Parameters)
  • 擴(kuò)展參數(shù)(Extension Parameters)
  • 緊湊 Parameter 語(yǔ)法(Compact Parameter Syntax)

下載 Demo、log4net

Apache log4net? 手冊(cè)——介紹【翻譯

配置


向應(yīng)用程序代碼插入日志請(qǐng)求需要大量的規(guī)劃和努力。觀察表明,約 4% 的代碼是專門(mén)用來(lái)記錄日志的。因此,即使中等規(guī)模的應(yīng)用程序也會(huì)嵌入成千上萬(wàn)的日志語(yǔ)句。鑒于日志語(yǔ)句在應(yīng)用程序中的數(shù)量,在無(wú)需手動(dòng)修改的情況下,管理這些日志語(yǔ)句,就成為當(dāng)務(wù)之急。

log4net 環(huán)境是完全可用編程配置的。然而,利用配置文件來(lái)配置 log4net 更靈活。目前,配置文件主要采用 xml 文件。

下面在 MyApp 應(yīng)用程序中使用 log4net。

位于本文 Demo 中的 MyApp 演示。

using Com.Foo;
 
// Import log4net classes.
using log4net;
using log4net.Config;
 
public class MyApp 
{
    // Define a static logger variable so that it references the
    // Logger instance named "MyApp".
    PRivate static readonly ILog log = LogManager.GetLogger(typeof(MyApp));
 
    static void Main(string[] args) 
    {
        // Set up a simple configuration that logs on the console.
        BasicConfigurator.Configure();
 
        log.Info("Entering application.");
        Bar bar = new Bar();
        bar.DoIt();
        log.Info("Exiting application.");
    }
}

導(dǎo)入 log4net 相關(guān)類。然后,定義一個(gè)靜態(tài)的 logger 變量,用 log4net 靜態(tài)方法和 MyApp 類名來(lái)初始化。

MyApp 使用位于另一個(gè)命令空間中的 Bar 類:

// Import log4net classes.
using log4net;
 
namespace Com.Foo
{
    public class Bar 
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(Bar));
 
        public void DoIt()
        {
            log.Debug("Did it again!");
        }
    }
}

調(diào)用 BasicConfigurator.Configure() 方法會(huì)創(chuàng)建了一個(gè)最簡(jiǎn)單的 log4net,向 root 記錄器添加一個(gè) ConsoleAppender——控制臺(tái)追加器。用log4net.Layout.PatternLayout 格式化輸出,設(shè)置格式為“%-4timestamp [%thread] %-5level %logger %ndc - %message%newline”

默認(rèn)時(shí),root 記錄器被分配為 Level.DEBUG

MyApp 輸出為:

0    [main] INFO  MyApp  - Entering application.
36   [main] DEBUG Com.Foo.Bar  - Did it again!
51   [main] INFO  MyApp  - Exiting application.

另外,log4net 中的“孩子”記錄器只會(huì)連接到他們已存在的“祖先”。具體地講,名為 Com.Foo.Bar 記錄器被直接連接到 root 記錄器,從而規(guī)避不存在的 ComCom.Foo 記錄器。這顯著提高了性能,并減少 log4net 的內(nèi)存占用。

MyApp 類通過(guò)調(diào)用 BasicConfigurator.Configure() 方法配置 log4net,而無(wú)需在配置文件進(jìn)行任何配置。其他類只需引用 log4net 命名空間,檢索期望的記錄器就可以。

上面例子總是輸出相同的日志信息,但很容易修改 MyApp 的配置,在運(yùn)行時(shí)控制日志的輸出。下面稍微對(duì)程序進(jìn)行修改。

位于本文 Demo 中的 MyApp2 演示。

using Com.Foo;
 
// Import log4net classes.
using log4net;
using log4net.Config;
 
public class MyApp 
{
    private static readonly ILog log = LogManager.GetLogger(typeof(MyApp));
 
    static void Main(string[] args) 
    {
        // BasicConfigurator replaced with XmlConfigurator.
        XmlConfigurator.Configure(new System.IO.FileInfo(args[0]));
 
        log.Info("Entering application.");
        Bar bar = new Bar();
        bar.DoIt();
        log.Info("Exiting application.");
    }
}

XmlConfigurator.Configure() 方法可以解析指定的配置文件,并相應(yīng)地進(jìn)行設(shè)置。上面示例是在命令行參數(shù)指定配置文件的路徑。

下面配置文件的輸出結(jié)果跟使用 BasicConfigurator 的結(jié)果一樣。

<log4net>
    <!-- A1 is set to be a ConsoleAppender -->
    <appender name="A1" type="log4net.Appender.ConsoleAppender">
 
        <!-- A1 uses PatternLayout -->
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message%newline" />
        </layout>
    </appender>
    
    <!-- Set root logger level to DEBUG and its only appender to A1 -->
    <root>
        <level value="DEBUG" />
        <appender-ref ref="A1" />
    </root>
</log4net>

假設(shè),我們不想看到任何關(guān)于 Com.Foo 包的輸出。下面配置文件是實(shí)現(xiàn)這個(gè)目標(biāo)的一種方法。

位于本文 Demo 中的 MyApp3 演示。

<log4net>
    <!-- A1 is set to be a ConsoleAppender -->
    <appender name="A1" type="log4net.Appender.ConsoleAppender">
 
        <!-- A1 uses PatternLayout -->
        <layout type="log4net.Layout.PatternLayout">
            <!-- Print the date in ISO 8601 format -->
            <conversionPattern value="%date [%thread] %-5level %logger %ndc - %message%newline" />
        </layout>
    </appender>
    
    <!-- Set root logger level to DEBUG and its only appender to A1 -->
    <root>
        <level value="DEBUG" />
        <appender-ref ref="A1" />
    </root>
    
    <!-- Print only messages of level WARN or above in the package Com.Foo -->
    <logger name="Com.Foo">
        <level value="WARN" />
    </logger>
</log4net>

用上面配置文件來(lái)配置 MyApp 將顯示如下結(jié)果:

2000-09-07 14:07:41,508 [main] INFO  MyApp - Entering application.
2000-09-07 14:07:41,529 [main] INFO  MyApp - Exiting application.

由于記錄器 Com.Foo.Bar 在任何地方中沒(méi)有分配級(jí)別,因此,它會(huì)從 Com.Foo 繼承,而 Com.Foo 在配置文件中被設(shè)置成 WARN 級(jí)別。因此,Bar.DoIt 方法中的記錄語(yǔ)句具有 DEBUG 級(jí)別,而 DEBUG 級(jí)別比 WARN 要低。因此,DoIt() 方法的日志請(qǐng)求被抑制。

log4net 是按級(jí)別輸出日志的,只輸出從你指定級(jí)別高的日志開(kāi)始。

下面的配置文件使用多個(gè)追加器(appenders)。

位于本文 Demo 中的 MyApp4 演示。

<log4net>
    <appender name="Console" type="log4net.Appender.ConsoleAppender">
        <layout type="log4net.Layout.PatternLayout">
            <!-- Pattern to output the caller's file name and line number -->
            <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
        </layout>
    </appender>
    
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
        <file value="example.log" />
        <appendToFile value="true" />
        <maximumFileSize value="100KB" />
        <maxSizeRollBackups value="2" />
 
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%level %thread %logger - %message%newline" />
        </layout>
    </appender>
    
    <root>
        <level value="DEBUG" />
        <appender-ref ref="Console" />
        <appender-ref ref="RollingFile" />
    </root>
</log4net>

用上面配置文件將輸出如下信息到控制臺(tái)。

 INFO [main] (MyApp.cs:16) - Entering application.
DEBUG [main] (Bar.cs:12) - Doing it again!
 INFO [main] (MyApp.cs:19) - Exiting application.

另外,root 記錄器的第二個(gè)附加目的地,輸出還會(huì)被定向到 example.log 文件。當(dāng)文件達(dá)到100KB時(shí),該文件將被轉(zhuǎn)存。轉(zhuǎn)存時(shí),example.log 將自動(dòng)移動(dòng)到 example.log.1。

你可以將 100KB 設(shè)置得小點(diǎn),能盡快看到結(jié)果。

注意,獲得上面那些日志的不同行為,不需要重新編譯代碼。你可以很容易地登錄一個(gè)電子郵件地址,重定向所有 Com.Foo 輸出到 NT 事件記錄器,或轉(zhuǎn)發(fā)事件記錄到遠(yuǎn)程 log4net 服務(wù)器,這將根據(jù)本地服務(wù)器策略日志。

關(guān)于使用 XmlConfigurator 配置追加器的更多例子,查看 Example Appender Configuration 文檔。

配置屬性


log4net 的配置可以通過(guò)裝配級(jí)別(assembly-level)的屬性來(lái)配置,而不用編程方式。

  • XmlConfiguratorAttribute

    log4net.Config.XmlConfiguratorAttributeXmlConfigurator 通過(guò)下面屬性配置:

    • ConfigFile

      如果指定了該屬性,XmlConfigurator 會(huì)使用配置文件名。該配置文件路徑是相對(duì)應(yīng)用程序基目錄(AppDomain.CurrentDomain.BaseDirectory)。

    • 該屬性不能跟下面的 ConfigFileExtension 屬性一起使用。

    • ConfigFileExtension

      如果指定了該屬性,它就是配置文件的擴(kuò)展名。裝配文件(程序集文件)名作為基文件名,后面加 log4net 配置文件的后綴名。例如,如果裝配是從 TestApp.exe 加載的,并且,ConfigFileExtension 屬性設(shè)置為 log4net,那么,配置文件的文件名就為 TestApp.exe.log4net。這相當(dāng)于設(shè)置 ConfigFile 屬性為 TestApp.exe.log4net

    • 配置文件的路徑是應(yīng)用程序基目錄(AppDomain.CurrentDomain.BaseDirectory)。

    • 該屬性不能與 ConfigFile 屬性一起使用。

    • Watch

      如果該標(biāo)記指定為 true,那么,框架將監(jiān)控配置文件,并且當(dāng)配置文件被修改時(shí),重新加載。

    如果既 ConfigFile ConfigFileExtension 屬性都沒(méi)有指定,那么應(yīng)用程序配置文件(如 TestApp.exe.config)作為 log4net 的配置文件。

    用法:

  • // Configure log4net using the .config file
    [assembly: log4net.Config.XmlConfigurator(Watch=true)]
    // This will cause log4net to look for a configuration file
    // called TestApp.exe.config in the application base
    // directory (i.e. the directory containing TestApp.exe)
    // The config file will be watched for changes.
    // Configure log4net using the .log4net file
    [assembly: log4net.Config.XmlConfigurator(ConfigFileExtension="log4net",Watch=true)]
    // This will cause log4net to look for a configuration file
    // called TestApp.exe.log4net in the application base
    // directory (i.e. the directory containing TestApp.exe)
    // The config file will be watched for changes.
                                

    上面的裝配屬性只能在裝配文件(程序集文件)中出現(xiàn)一次。若出現(xiàn)多次,Build 時(shí),會(huì)報(bào)錯(cuò)。

Using attributes can be a clearer method for defining where the application's configuration will be loaded from. However it is worth noting that attributes are purely passive. They are information only. Therefore if you use configuration attributes you must invoke log4net to allow it to read the attributes. A simple call to LogManager.GetLogger will cause the attributes on the calling assembly to be read and processed. Therefore it is imperative to make a logging call as early as possible during the application start-up, and certainly before any external assemblies have been loaded and invoked.

應(yīng)用程序 appSettings


如果你使用 attributes 來(lái)配置 log4net,你應(yīng)用程序配置文件的 AppSettings 小節(jié)有兩個(gè)配置可以用于覆蓋你在裝配文件中給出的值。

  • 鍵為 "log4net.Config" 設(shè)置,會(huì)覆蓋配置文件名(相對(duì)于你應(yīng)用程序基目錄);
  • 鍵為 "log4net.Config.Watch" 設(shè)置,決定是否監(jiān)控文件的修改。

即使裝配文件屬性為

[assembly: log4net.Config.XmlConfigurator(Watch=false)] 
而你已經(jīng)配置你的應(yīng)用程序使用 "TestApp.exe.config" 作為配置文件,并且不監(jiān)控配置文件的變化。但若把下面配置添加到你的應(yīng)用程序配置文件,將覆蓋這個(gè)配置,轉(zhuǎn)而使用 "log4net.config" 作為 log4net 配置文件,并且監(jiān)控配置文件的變化。
<appSettings>
  <add key="log4net.Config" value="log4net.config"/>
  <add key="log4net.Config.Watch" value="True"/>
</appSettings>

配置文件


使用文件來(lái)指定 log4net 配置。有兩種方式讀取文件:

  • 使用 .NET System.Configuration API
  • 直接讀取文件內(nèi)容

其實(shí),log4net 即可以讀取應(yīng)用程序 .config 配置文件,也可以直接讀取它自己的配置文件。之所以這么做,完全是因?yàn)椋瑧?yīng)用程序訪問(wèn)文件系統(tǒng)時(shí)存在權(quán)限問(wèn)題。估計(jì)你也遇到和設(shè)置過(guò),比如,當(dāng)在 Web 應(yīng)用程序中,涉及操作文件系統(tǒng)時(shí),比如寫(xiě)文件,訪問(wèn)所在文件的目錄就會(huì)遇到權(quán)限問(wèn)題。

.config 文件

如果配置的數(shù)據(jù)是在應(yīng)用程序配置文件中,如 MyApp.exe.configWeb.config,那么 System.Configuration API 是唯一可用的。因?yàn)椋琒ystem.Configuration API 不支持重新加載配置文件,配置的設(shè)置不能通過(guò) log4net.Config.XmlConfigurator.ConfigureAndWatch 方法來(lái)監(jiān)控。使用 System.Configuration API 來(lái)讀取配置數(shù)據(jù)的主要優(yōu)點(diǎn)是,它比直接訪問(wèn)配置文件需要的權(quán)限更小。

使用 System.Configuration API 配置應(yīng)用程序的唯一方法,是調(diào)用 log4net.Config.XmlConfigurator.Configure()log4net.Config.XmlConfigurator.Configure(ILoggerRepository) 方法。

為了在 .config 文件嵌入配置數(shù)據(jù),小節(jié)的名稱必須能夠被 .NET 配置文件分析器識(shí)別,這是通過(guò)使用 configSections 元素。小節(jié)必須指定 log4net.Config.Log4NetConfigurationSectionHandler,用于解析配置的小節(jié)。小節(jié)的類型必須是完全的裝配限定名(fully assembly qualified name),因?yàn)椋@是通過(guò) .NET 配置文件分析器加載的,而不是 log4net。

對(duì)于 log4net 必須指定正確的裝配名。下面示例是一個(gè)簡(jiǎn)單的配置,該文件指定了正確的節(jié)處理程序用于 log4net。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
    <log4net>
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
            </layout>
        </appender>
        <root>
            <level value="INFO" />
            <appender-ref ref="ConsoleAppender" />
        </root>
    </log4net>
</configuration>

configSetions 元素必須作為 configuration 元素的第一個(gè)子元素。否則,運(yùn)行應(yīng)用程序時(shí),會(huì)報(bào)錯(cuò)。

上面示例,指定了 log4net 程序集(log4net 的 dll 文件)。該程序集必須位于 .NET 運(yùn)行時(shí)能夠找到的地方。例如,它位于跟應(yīng)用程序相同的目錄。如果 log4net 程序集被存放在 GAC(全局程序集緩存),那么完全限定的程序集名必須指定文化、版本和公鑰。

當(dāng)使用應(yīng)用程序 .config 文件指定 log4net 配置時(shí),小節(jié)名和 XML 元素必須為 log4net,即 XML 文件中 log4net 使用名為“l(fā)og4net”元素,而 setion 小節(jié)的 name 屬性也為“l(fā)og4net”。

直接讀取文件

XmlConfigurator 可以直接讀取任何 XML 文件來(lái)配置 log4net。這包括應(yīng)用程序 .config 文件,如 MyApp.exe.config 或 Web.config。不直接讀取配置文件的唯一理由是,如果應(yīng)用程序沒(méi)有足夠的權(quán)限讀取文件,那么,配置必須通過(guò) .NET 配置 API 來(lái)加載(見(jiàn)上面)。

通過(guò) log4net.Config.XmlConfigurator 方法讀取配置文件,該方法接受 System.IO.FileInfo 對(duì)象。因?yàn)椋募到y(tǒng)可以被監(jiān)控用于文件修改通知,ConfigureAndWatch 方法可用于監(jiān)控文件的修改,并自動(dòng)重新配置 log4net。

添加 log4net.Config.XmlConfiguratorAttribute 用于指定讀取的配置文件。

配置可以從文件中的 log4net 元素讀取。在文件中,只能指定一個(gè) log4net 元素,但它可以位于 XML 結(jié)構(gòu)中的任何位置。例如,它可以是根元素:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
        </layout>
    </appender>
    <root>
        <level value="INFO" />
        <appender-ref ref="ConsoleAppender" />
    </root>
</log4net>

或是,嵌入其他元素內(nèi):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
    </configSections>
    <log4net>
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
            </layout>
        </appender>
        <root>
            <level value="INFO" />
            <appender-ref ref="ConsoleAppender" />
        </root>
    </log4net>
</configuration>

上面例子顯示,配置的數(shù)據(jù)如何嵌入到應(yīng)用程序 .config 文件,即使該文件直接被 log4net 讀取。注意:如果 .NET 配置文件分析器發(fā)現(xiàn),沒(méi)有通過(guò) configSections 元素注冊(cè),那么,.NET 配置文件分析器將拋出一個(gè)異常。因此,上面例子,log4net 小節(jié)被注冊(cè),但是 type 指定的處理程序是 System.Configuration.IgnoreSectionHandler。這是一個(gè)內(nèi)置類,指示將采用另一個(gè)方法讀取配置的小節(jié)。

配置語(yǔ)法

log4net 包含解析 XML DOM 的一個(gè)配置讀取器,即 log4net.Config.XmlConfigurator。本小節(jié)說(shuō)明配置器接受的語(yǔ)法。

下面是一個(gè)可用的 XML 配置。根元素必須是 log4net。注意:這不意味著該元素可以嵌入到另一個(gè) XML 文檔。關(guān)于如何嵌入的更多信息查看 Configuration Files。

<log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
        </layout>
    </appender>
    <root>
        <level value="INFO" />
        <appender-ref ref="ConsoleAppender" />
    </root>
</log4net>

log4net 元素支持如下屬性:

屬性

描述

debug

可選。Value must be either true or false. The default value is false. Set this attribute to true to enable internal log4net debugging for this configuration.

update

可選。Value must be either Merge or Overwrite. The default value is Merge. Set this attribute to Overwrite to reset the configuration of the repository being configured before applying this configuration.

threshold

可選。Value must be the name of a level registered on the repository. The default value is ALL. Set this attribute to limit the messages that are logged across the whole repository, regardless of the logger that the message is logged to.

log4net 元素支持如下子元素:

元素

描述

appender

零個(gè)或多個(gè)。Defines an appender.

logger

零個(gè)或多個(gè)。Defines the configuration of a logger.

renderer

零個(gè)或多個(gè)。Defines an object renderer.

root

可選。只能有一個(gè)。Defines the configuration of the root logger.

param

零個(gè)或多個(gè)。Repository specific parameters

追加器(Appenders)


appenderlog4net 元素的子元素。每個(gè) appender 必須具有唯一的名字。必須指定 appender 的實(shí)現(xiàn)類型 type

下面展示定義一個(gè) log4net.Appender.ConsoleAppender 的 appender。appender 名為 ConsoleAppender。

<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
    </layout>
</appender>

appender 元素的 name 屬性可以為任何你期望的名稱。

appender 元素支持如下屬性:

屬性

描述

name

必需。該值必須是一個(gè) appender 字符串名稱(這不廢話嘛)。該名稱必須在定義配置文件中所有的 appender 中唯一。記錄器的 appender-ref 元素會(huì)使用該名字引用一個(gè) appender。

type

必需。該值是 appender 的類型名。If the appender is not defined in the log4net assembly this type name must be fully assembly qualified.

appender 元素支持如下子元素:

元素

描述

appender-ref

零個(gè)或多個(gè)。Allows the appender to reference other appenders. Not supported by all appenders.

filter

零個(gè)或多個(gè)。Defines the filters used by this appender.

layout

可選。只能有一個(gè)。Defines the layout used by this appender.

param

零個(gè)或多個(gè)。Appender specific parameters.

配置 appenders 的信息參看 Example Appender Configuration 文檔。

篩選器(Filters)


Filters 是只能定義在 appender,作為它的子元素。

filter 元素支持如下屬性:

屬性

描述

type

必需。Value must be the type name for this filter. If the filter is not defined in the log4net assembly this type name must be fully assembly qualified.

filter 元素支持如下子元素:

元素 描述
param

零個(gè)或多個(gè)。Filter specific parameters.

Filter 形成一個(gè)事件必須通過(guò)的鏈。沿著這個(gè)鏈的任何 filter 能夠接受時(shí)間并停止處理,拒絕事件并停止處理,或讓事件到下一個(gè) filter。如果事件到達(dá) filter 鏈的末端,而沒(méi)有被拒絕,將隱式接受,并被記錄。

<filter type="log4net.Filter.LevelRangeFilter">
    <levelMin value="INFO" />
    <levelMax value="FATAL" />
</filter>

上面配置將記錄所有在 INFO 和 FATAL 級(jí)別之間的事件。

如果我們只想記錄具有指定字符串(如,database),那么需要指定如下 filter:

<filter type="log4net.Filter.StringMatchFilter">
    <stringToMatch value="database" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />

第一個(gè) filter 將查找事件信息文本中的子字符串 'database'。若發(fā)現(xiàn),則 filter 接受消息,并且 filter 處理將停止,記錄信息;否則,事件將被傳遞給下一個(gè) filter 處理。如果不存在下一個(gè) filter,那么,事件會(huì)隱式接受并記錄。但是,我們不想記錄不匹配的事件,因此,我們需要使用 log4net.Filter.DenyAllFilter,來(lái)拒絕所有到達(dá)的事件。這個(gè) filter 只在 filter 鏈的末端有用。

If we want to allow events that have either 'database' or 'ldap' in the message text we can use the following filters:

<filter type="log4net.Filter.StringMatchFilter">
    <stringToMatch value="database"/>
</filter>
<filter type="log4net.Filter.StringMatchFilter">
    <stringToMatch value="ldap"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter" />

布局(Layouts)


Layout 元素只能定義在 appender,作為它的子元素。 Layout 就是具體日志的格式。

layout 元素支持如下屬性:

屬性

描述

type

必需。Value must be the type name for this layout. If the layout is not defined in the log4net assembly this type name must be fully assembly qualified.

layout 元素支持的子元素:

元素

描述

param

零個(gè)或多個(gè)。Layout specific parameters.

下面示例演示如何使用 log4net.Layout.PatternLayout 配置布局。

<layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>

根記錄器(Root Logger)


Only one root logger element may only be defined and it must be a child of <log4net> element. The root logger is the root of the logger hierarchy. All loggers ultimately inherit from this logger.

An example root logger:

<root>
    <level value="INFO" />
    <appender-ref ref="ConsoleAppender" />
</root>

root 元素沒(méi)有屬性。

root 元素支持的子元素:

元素

描述

appender-ref

零個(gè)或多個(gè)。Allows the logger to reference appenders by name.

level

可選。只能有一個(gè)。Defines the logging level for this logger. This logger will only accept event that are at this level or above.

param

零個(gè)或多個(gè)。Logger specific parameters.

記錄器(Loggers)


Logger 元素只能定義在 log4net 元素,作為它的子元素。

示例:

<logger name="LoggerName">
    <level value="DEBUG" />
    <appender-ref ref="ConsoleAppender" />
</logger>

logger 元素支持的屬性如下表所示:

屬性

描述

name

必需。Value must be the name of the logger.

additivity

可選。Value may be either true or false. The default value is true. Set this attribute to false to prevent this logger from inheriting the appenders defined on parent loggers.

logger 元素支持的子元素如下表所示:

元素

描述

appender-ref

零個(gè)或多個(gè)。Allows the logger to reference appenders by name.

level

可選。只能有一個(gè)。Defines the logging level for this logger. This logger will only accept event that are at this level or above.

param

零個(gè)或多個(gè)。Logger specific parameters.

渲染(Renderers)


Renderer 元素只能定義在 log4net 元素,作為其子元素。

示例:

<renderer renderingClass="MyClass.MyRenderer" renderedClass="MyClass.MyFunkyObject" />

renderer 元素支持的屬性如下表所示:

屬性

描述

renderingClass

必需。Value must be the type name for this renderer. If the type is not defined in the log4net assembly this type name must be fully assembly qualified. This is the type of the object that will take responsibility for rendering the renderedClass.

renderedClass

必需。Value must be the type name for the target type for this renderer. If the type is not defined in the log4net assembly this type name must be fully assembly qualified. This is the name of the type that this renderer will render.

renderer 元素沒(méi)有子元素。

參數(shù)(Parameters)


Parameter 元素是很多元素的子元素。

示例:

<param name="ConversionPattern" value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />

param 元素支持的屬性如下表所示:

屬性

描述

name

必需。Value must be the name of the parameter to set on the parent object.

value

可選。One of value or type attributes must be specified. The value of this attribute is a string that can be converted to the value of the parameter.

type

可選。One of value or type attributes must be specified. The value of this attribute is a type name to create and set as the value of the parameter. If the type is not defined in the log4net assembly this type name must be fully assembly qualified.

param 元素支持子元素如下表所示:

元素

描述

param

零個(gè)或多個(gè)。Parameter specific parameters.

An example param that uses nested param elements:

<param name="evaluator" type="log4net.spi.LevelEvaluator">
    <param name="Threshold" value="WARN"/>
<param>

擴(kuò)展參數(shù)(Extension Parameters)


配置 parameters 直接映射到一個(gè)對(duì)象的可寫(xiě)屬性。可用的屬性取決于被配置對(duì)象的實(shí)際類型。log4net SDK 文檔包含 log4net 程序集中所有組件的 API 引用。

緊湊 Parameter 語(yǔ)法(Compact Parameter Syntax)


所有 parameters 可交替使用參數(shù)名作為元素名,而不是使用 param 元素和 name 屬性指定。

示例:

<param name="evaluator" type="log4net.spi.LevelEvaluator">
    <param name="Threshold" value="WARN"/>
<param>

可以寫(xiě)為:

<evaluator type="log4net.spi.LevelEvaluator">
    <threshold value="WARN"/>
<evaluator>

 

下載 Demo、log4net

Apache log4net? 手冊(cè)——概述【翻譯】


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宜兰市| 资溪县| 揭阳市| 皋兰县| 锡林郭勒盟| 金门县| 台南市| 阿鲁科尔沁旗| 无锡市| 绩溪县| 惠东县| 花垣县| 马龙县| 郎溪县| 盘锦市| 怀远县| 寿阳县| 卓资县| 临猗县| 崇州市| 平乐县| 海南省| 铜鼓县| 乳山市| 济源市| 辛集市| 伊吾县| 郸城县| 伊春市| 汝城县| 津南区| 上杭县| 太仓市| 祁阳县| 承德市| 福安市| 徐水县| 浑源县| 英吉沙县| 贵德县| 遵义市|