OracleLog4net简介

一 Log4net简介

Log4net是基于.net开发的同样款大有名的笔录日志开源组件。他不过早是2001年7月是因为NeoWorks Limited启动之项目,基本的框架来另外的一个大有名的姊妹组件-log4j。Log4net记录日志的职能很有力。它可以将日志分不同的等级,比不可同日而语之样式,将日志输出及不同的介绍人。

Log4net可以从http://logging.apache.org/log4net/downloads.html网站下载最新版本。

仲 Log4net核心组成

Log4net主要出于五独片构成,分别吗Logger,Appenders, Filters, Layouts 和Object Renders。

一)         Logger(日志)

1. 记录日志的归类:

Log4net能够为强法出口日志。支持之日记输出常用之重大媒介有数据库(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite,控制台,文件,事件日志(可以用事件查看器查看)和邮件等强措施。

2. 日志的级别

Log4net支持多级别的日志。优先级从高及低依次排列如下:

FATAL > ERROR > WARN > INFO > DEBUG

此外还有ALL(允许有的日志请求)和OFF(拒绝所有的日志请求)这有限种植特别之级别。

二)         Appenders

Appenders决定日志输出的方式。

Appenders必须实现log4net.Appenders.IAppender接口。

Log4net目前支持的输出方式包括:
1 AdoNetAppender
    将日志记录到数据库中。可以应用SQL和贮过程少栽艺术。

2 AnsiColorTerminalAppender
    在ANSI 窗口终端写下大亮度的日志事件。

3 AspNetTraceAppender
    能为此asp.net中Trace的道查看记录之日记。

4 BufferingForwardingAppender
    在输出到子Appenders之前先行缓存日志事件。

5 ConsoleAppender
    将日志输出到控制台。

6 EventLogAppender
    将日志写到Windows Event Log. 

7 FileAppender
    将日志写及文件被。

8 LocalSyslogAppender
    将日志写及local syslog service (仅用于UNIX环境下). 
9 MemoryAppender
    将日志存到外存缓冲区。

10 NetSendAppender
    将日志输出及Windows Messenger service.这些日记信息用在用户终端的对话框中形。

11 RemoteSyslogAppender
    通过UDP网络协议将日志写及Remote syslog service。

12 RemotingAppender
    通过.NET Remoting将日志写到长途接收端。

13 RollingFileAppender
    将日志以回滚文件的款型写及文件中。

14 SmtpAppender
    将日志写到邮件被。

15 TraceAppender
    将日志写到.NET trace 系统。

16 UdpAppender
    将日志connectionless UDP datagrams的款型送至长途宿主或因为UdpClient的形式播放。 

三)         Filters

Appender对象将日志以少省之计传到输出流,然后Filter可以遵循不同的正经控制日志的出口。Filter可以再配置文件被配备。最简易的款型是于appender中描绘清楚一个Threshold.这样只发生级别大于或等是Threshold的日记才为记录。

Filters必须贯彻log4net.Filters.IFilter接口。

四)         Layouts

Layouts控制日志显示的格式样式。日志的亮格式如下:

“%timestamp [%thread] %-5level %logger – %message%newline”

Timestamp: 表示程序已经起来实行之年华。 单位[毫秒]。

Thread:执行时代码的线程。

Level:日志的级别。

Logger:日志相关请求的称谓。

Message: 日志信。

Layouts还好控制日志的输出样式,比如以普通形式或因为xml等花样出口。

五)         Object Renderers

旋即是异常重大之同一件,log4net将遵循用户定义的正统输出日志信息。

Object Renders必须贯彻log4net.ObjectRenderer.IObjectRenerer接口。

老三 如何在列蒙应用log4net

下面来个因控制台的demo,举例描述了log4net怎么用于出口日志。
本例中,日志将见面记录及文件,控制台,事件日到与Access数据库被。

无异于)主要代码:

1. 安排文件app.config

 1<?xml version=”1.0″ encoding=”utf-8″ ?>
 2<configuration>
 3    <!– Register a section handler for the log4net section –>
 4    <configSections>
 5        <section name=”log4net” type=”System.Configuration.IgnoreSectionHandler” />
 6    </configSections>
 7    <appSettings>
 8        <!– To enable internal log4net logging specify the following appSettings key –>
 9        <!– <add key=”log4net.Internal.Debug” value=”true”/> –></appSettings>
10    <!– This section contains the log4net configuration settings –>
11    <log4net>
12        <!–定义输出及文件中–>
13        <appender name=”LogFileAppender” type=”log4net.Appender.FileAppender”>
14            <!–定义文件存放位置–>
15            <file value=”D:/log-file1.txt” />
16            <!– Example using environment variables in params –>
17            <!– <file value=”${TMP}/log-file.txt” /> –>
18            <!–<sppendToFile value=”true” />–>
19            <!– An alternate output encoding can be specified –>
20            <!– <encoding value=”unicodeFFFE” /> –>
21            <layout type=”log4net.Layout.PatternLayout”>
22                <!–每条日志末尾的文字说明–>
23                <footer value=”[Footer]–Test By Ring1981  ” />
24                <!–输出格式–>
25                <conversionPattern value=”%date [%thread] %-5level %logger [%ndc] <%property{auth}> – %message%newline” />
26            </layout>            
27        </appender>
28        <!–定义输出到控制台命令行中–>
29        <appender name=”ConsoleAppender” type=”log4net.Appender.ConsoleAppender”>            
30            <layout type=”log4net.Layout.PatternLayout”>
31                <conversionPattern value=”%date [%thread] %-5level %logger [%property{NDC}] – %message%newline” />
32            </layout>
33        </appender>
34        <!–定义输出到windows事件受到–>
35        <appender name=”EventLogAppender” type=”log4net.Appender.EventLogAppender”>
36            <layout type=”log4net.Layout.PatternLayout”>
37                <conversionPattern value=”%date [%thread] %-5level %logger [%property{NDC}] – %message%newline” />
38            </layout>
39        </appender>
40        <!–定义输出到数据库被,这里举例输出及Access数据库中,数据库也D盘的access.mdb–>
41        <appender name=”AdoNetAppender_Access” type=”log4net.Appender.AdoNetAppender”>
42            <connectionString value=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/access.mdb” />
43            <commandText value=”INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)” />
44            <!–定义各个参数–>
45            <parameter>
46                <parameterName value=”@log_date” />
47                <dbType value=”String” />
48                <size value=”255″ />
49                <layout type=”log4net.Layout.PatternLayout”>
50                    <conversionPattern value=”%date” />
51                </layout>
52            </parameter>
53            <parameter>
54                <parameterName value=”@thread” />
55                <dbType value=”String” />
56                <size value=”255″ />
57                <layout type=”log4net.Layout.PatternLayout”>
58                    <conversionPattern value=”%thread” />
59                </layout>
60            </parameter>
61            <parameter>
62                <parameterName value=”@log_level” />
63                <dbType value=”String” />
64                <size value=”50″ />
65                <layout type=”log4net.Layout.PatternLayout”>
66                    <conversionPattern value=”%level” />
67                </layout>
68            </parameter>
69            <parameter>
70                <parameterName value=”@logger” />
71                <dbType value=”String” />
72                <size value=”255″ />
73                <layout type=”log4net.Layout.PatternLayout”>
74                    <conversionPattern value=”%logger” />
75                </layout>
76            </parameter>
77            <parameter>
78                <parameterName value=”@message” />
79                <dbType value=”String” />
80                <size value=”1024″ />
81                <layout type=”log4net.Layout.PatternLayout”>
82                    <conversionPattern value=”%message” />
83                </layout>
84            </parameter>
85        </appender>
86        <!–定义日志的输出媒介,下面定义日志以四栽办法出口。也可以下的比如同等种档次或者任何类型输出。–>
87        <root>
88            <appender-ref ref=”LogFileAppender” />
89            <appender-ref ref=”ConsoleAppender” />
90            <appender-ref ref=”EventLogAppender” />
91            <appender-ref ref=”AdoNetAppender_Access” />
92        </root>
93    </log4net>
94</configuration>
2. LoggingExample.cs

 1// Configure log4net using the .config file
 2[assembly: log4net.Config.XmlConfigurator(Watch=true)]
 3// This will cause log4net to look for a configuration file
 4// called ConsoleApp.exe.config in the application base
 5// directory (i.e. the directory containing ConsoleApp.exe)
 6
 7namespace ConsoleApp
 8{
 9    using System;
10
11    /**//// <summary>
12    /// Example of how to simply configure and use log4net
13    /// </summary>
14    public class LoggingExample
15    {
16        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
17        
18        public static void Main(string[] args)
19        {
20            log.Error(“Error Acc”);
21            log.Fatal(“Fatle Acc”);            
22            System.Console.ReadLine();
23            
24        }
25
26    }
27}
28
运转程序,日志就会见坐xml中定义之季栽媒介形式出口。 
源代码可以从http://files.cnblogs.com/Ring1981/Log4net%20Test.rar下载。

相关文章