`

日志记录组件[Log4net]详细介绍

    博客分类:
  • net
 
阅读更多

 

一Log4net简介

Log4net是基于.net开发的一款非常著名的记录日志开源组件。他最早是2001年7月由NeoWorksLimited启动的项目,基本的框架源于另外的一个非常著名的姐妹组件-log4j。Log4net记录日志的功能非常强大。它可以将日志分不同的等级,比不同的样式,将日志输出到不同的媒介。

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

 

 

二Log4net核心组成

Log4net主要由五个部分组成,分别为Logger,Appenders,Filters,Layouts和ObjectRenders。

 

一)Logger(日志)

 

1.记录日志的分类:

Log4net能够以多种方式输出日志。支持的日志输出常用的主要媒介有数据库(包括MSSQLServer,Access,Oracle9i,Oracle8i,DB2,SQLite,控制台,文件,事件日志(可以用事件查看器查看)和邮件等多种方式。

 

2.日志的级别

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

FATAL>ERROR>WARN>INFO>DEBUG

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

 

二)Appenders

 

Appenders决定日志输出的方式。

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

 

Log4net目前支持的输出方式包括:
1AdoNetAppender
将日志记录到数据库中。可以采用SQL和存储过程两种方式。

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

3AspNetTraceAppender
能用asp.net中Trace的方式查看记录的日志。

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

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

6EventLogAppender
将日志写到WindowsEventLog.

7FileAppender
将日志写到文件中。

8LocalSyslogAppender
将日志写到localsyslogservice(仅用于UNIX环境下).
9MemoryAppender
将日志存到内存缓冲区。

10NetSendAppender
将日志输出到WindowsMessengerservice.这些日志信息将在用户终端的对话框中显示。

11RemoteSyslogAppender
通过UDP网络协议将日志写到Remotesyslogservice。

12RemotingAppender
通过.NETRemoting将日志写到远程接收端。

13RollingFileAppender
将日志以回滚文件的形式写到文件中。

14SmtpAppender
将日志写到邮件中。

15TraceAppender
将日志写到.NETtrace系统。

16UdpAppender
将日志connectionlessUDPdatagrams的形式送到远程宿主或以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等形式输出。

 

五)ObjectRenderers

 

这是很重要的一项,log4net将按照用户定义的标准输出日志消息。

ObjectRenders必须实现log4net.ObjectRenderer.IObjectRenerer接口。

 

 

三如何在项目中使用log4net

 

下面有个基于控制台的demo,举例描述了log4net怎么用于输出日志。
本例中,日志将会记录到文件,控制台,事件日至和Access数据库中。

一)主要代码:

1.配置文件app.config

 

1<?xmlversion="1.0"encoding="utf-8"?>
2<configuration>
3<!--Registerasectionhandlerforthelog4netsection-->
4<configSections>
5<sectionname="log4net"type="System.Configuration.IgnoreSectionHandler"/>
6</configSections>
7<appSettings>
8<!--Toenableinternallog4netloggingspecifythefollowingappSettingskey-->
9<!--<addkey="log4net.Internal.Debug"value="true"/>--></appSettings>
10<!--Thissectioncontainsthelog4netconfigurationsettings-->
11<log4net>
12<!--定义输出到文件中-->
13<appendername="LogFileAppender"type="log4net.Appender.FileAppender">
14<!--定义文件存放位置-->
15<filevalue="D:/log-file1.txt"/>
16<!--Exampleusingenvironmentvariablesinparams-->
17<!--<filevalue="${TMP}/log-file.txt"/>-->
18<!--<sppendToFilevalue="true"/>-->
19<!--Analternateoutputencodingcanbespecified-->
20<!--<encodingvalue="unicodeFFFE"/>-->
21<layouttype="log4net.Layout.PatternLayout">
22<!--每条日志末尾的文字说明-->
23<footervalue="[Footer]--TestByRing1981"/>
24<!--输出格式-->
25<conversionPatternvalue="%date[%thread]%-5level%logger[%ndc]&lt;%property{auth}&gt;-%message%newline"/>
26</layout>
27</appender>
28<!--定义输出到控制台命令行中-->
29<appendername="ConsoleAppender"type="log4net.Appender.ConsoleAppender">
30<layouttype="log4net.Layout.PatternLayout">
31<conversionPatternvalue="%date[%thread]%-5level%logger[%property{NDC}]-%message%newline"/>
32</layout>
33</appender>
34<!--定义输出到windows事件中-->
35<appendername="EventLogAppender"type="log4net.Appender.EventLogAppender">
36<layouttype="log4net.Layout.PatternLayout">
37<conversionPatternvalue="%date[%thread]%-5level%logger[%property{NDC}]-%message%newline"/>
38</layout>
39</appender>
40<!--定义输出到数据库中,这里举例输出到Access数据库中,数据库为D盘的access.mdb-->
41<appendername="AdoNetAppender_Access"type="log4net.Appender.AdoNetAppender">
42<connectionStringvalue="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=D:/access.mdb"/>
43<commandTextvalue="INSERTINTOLog([Date],[Thread],[Level],[Logger],[Message])VALUES(@log_date,@thread,@log_level,@logger,@message)"/>
44<!--定义各个参数-->
45<parameter>
46<parameterNamevalue="@log_date"/>
47<dbTypevalue="String"/>
48<sizevalue="255"/>
49<layouttype="log4net.Layout.PatternLayout">
50<conversionPatternvalue="%date"/>
51</layout>
52</parameter>
53<parameter>
54<parameterNamevalue="@thread"/>
55<dbTypevalue="String"/>
56<sizevalue="255"/>
57<layouttype="log4net.Layout.PatternLayout">
58<conversionPatternvalue="%thread"/>
59</layout>
60</parameter>
61<parameter>
62<parameterNamevalue="@log_level"/>
63<dbTypevalue="String"/>
64<sizevalue="50"/>
65<layouttype="log4net.Layout.PatternLayout">
66<conversionPatternvalue="%level"/>
67</layout>
68</parameter>
69<parameter>
70<parameterNamevalue="@logger"/>
71<dbTypevalue="String"/>
72<sizevalue="255"/>
73<layouttype="log4net.Layout.PatternLayout">
74<conversionPatternvalue="%logger"/>
75</layout>
76</parameter>
77<parameter>
78<parameterNamevalue="@message"/>
79<dbTypevalue="String"/>
80<sizevalue="1024"/>
81<layouttype="log4net.Layout.PatternLayout">
82<conversionPatternvalue="%message"/>
83</layout>
84</parameter>
85</appender>
86<!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
87<root>
88<appender-refref="LogFileAppender"/>
89<appender-refref="ConsoleAppender"/>
90<appender-refref="EventLogAppender"/>
91<appender-refref="AdoNetAppender_Access"/>
92</root>
93</log4net>
94</configuration>
2.LoggingExample.cs

1//Configurelog4netusingthe.configfile
2[assembly:log4net.Config.XmlConfigurator(Watch=true)]
3//Thiswillcauselog4nettolookforaconfigurationfile
4//calledConsoleApp.exe.configintheapplicationbase
5//directory(i.e.thedirectorycontainingConsoleApp.exe)
6
7namespaceConsoleApp
8{
9usingSystem;
10
11/**////<summary>
12///Exampleofhowtosimplyconfigureanduselog4net
13///</summary>
14publicclassLoggingExample
15{
16privatestaticreadonlylog4net.ILoglog=log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
17
18publicstaticvoidMain(string[]args)
19{
20log.Error("ErrorAcc");
21log.Fatal("FatleAcc");
22System.Console.ReadLine();
23
24}
25
26}
27}
28
运行程序,日志就会以xml中定义的四种媒介形式输出。

分享到:
评论

相关推荐

    日志记录Log4j配置介绍

    Log4j提供了灵活的日志记录机制,允许开发者根据需求调整日志信息的级别、格式以及输出方式等。 ##### 1.1 日志级别 在Log4j中,日志信息可以分为以下五个级别: - **DEBUG**:用于调试信息,通常在开发阶段开启...

    最好的.NET日志组件log4net.dll,.NET4.0适用

    log4net是一个强大的、灵活的日志记录工具,由Apache软件基金会开发,广泛应用于.NET开发中,为开发者提供了丰富的日志记录功能,帮助调试和维护应用程序。 **log4net基本概念** 1. **组件介绍**:log4net是基于...

    log4net应用demo_记录系统日志信息(支持6种数据库)

    Log4net是Apache的一个开源项目,它是.NET平台上一个强大的日志记录工具,广泛应用于各种软件开发中,用于收集、管理和输出应用程序运行时的日志信息。系统日志则意味着这个Demo着重于如何在实际系统环境中应用Log4...

    Log4Net通用组件

    这个组件,被称为"Log4Net通用组件",是专门为.NET应用程序设计的,旨在帮助开发人员轻松地集成日志记录机制,以便在运行时追踪代码行为,调试问题,以及收集性能数据。 Log4Net的核心特性包括: 1. **配置灵活性*...

    C#控制台应用使用Log4net日志

    Log4net是Apache软件基金会的一个项目,它为.NET应用程序提供了强大的日志记录功能,具有灵活的配置和多种输出选项。 首先,我们要理解Log4net的基本概念。Log4net提供了一个编程接口,通过这个接口,我们可以在...

    log组件_labview日志组件_LOGO日志记录_

    在“LOGO日志记录”中,"LOGO"可能是"Logging Object"的缩写,指的是LabVIEW中的一个专门用于日志记录的对象或类。这个对象可能封装了上述日志组件的所有功能,并提供了简洁的接口供开发者使用。 压缩包内的“log...

    日志记录组件log4web.js.zip

    简介基于浏览器端的console的日志记录组件。支持如下特性:日志级别设置;异常提交到服务器;提交环境信息;日志Tag过滤器;如何使用浏览器下的引用[removed][removed][removed]  log4web.log("houyhea");  log4...

    log4pb, pb的日志组件, 后台线程记录日志

    // Description: pb日志组件,把log4pb.pbd, callback.pbd加入到开发的libary列表中 // 1. log4pb调用演示例子, 思想仿log4j // 2. 集成对象到application, // 3. 组件文件: log4pb90.pdb + callback.pbd, // 4. ...

    Log4net日志记录组件-学习心得

    Log4net是一款强大的日志记录组件,广泛应用于.NET框架下的应用程序中,为开发者提供了一种灵活、可配置的日志记录方案。它可以帮助我们追踪代码执行过程中的错误、调试信息和其他重要事件,便于后期分析和优化程序...

    C# 日志记录类 Log4N

    配置文件通常为XML格式,如`log4net.config`,它定义了日志记录的行为,如日志级别、输出目的地、布局模式等。用户可以根据项目需求调整这些设置,无需修改代码。 标签中的"日志类"表示这是一个关于C#日志记录的...

    Log4net 日志记录源码

    Log4net 是一个广泛使用的开源日志记录框架,由 Apache 软件基金会开发。它为 .NET 应用程序提供了强大的日志记录功能,支持多种输出方式,包括文件、控制台、数据库、SMTP 邮件等。在本文中,我们将深入探讨 Log4...

    log4net.dll ,C#日志记录工具

    **log4net.dll** 是一个广泛使用的开源日志记录库,专门为.NET Framework设计,它为C#和其他.NET语言的应用程序提供了强大的日志记录功能。这个库由Apache软件基金会开发,是log4j(Java平台上的日志框架)的.NET...

    log4net组件 用于日志管理

    而log4net就是.NET平台上一款强大的日志记录工具,由Apache软件基金会开发并维护,提供了一套灵活、高效且易于使用的API来实现应用程序的日志记录。 **一、log4net的功能特性** 1. **灵活性**:log4net支持多种...

    Log4net详细说明使用

    Log4net是一个强大的开源日志记录组件,广泛应用于.NET框架中。它提供了丰富的日志管理功能,能够将日志信息按不同级别分类,并以多种格式输出到不同的目标,如文件、控制台、数据库等。使用Log4net可以方便地监控和...

    log日志组件总结

    log4j提供了丰富的功能,如灵活的日志级别控制(DEBUG、INFO、WARN、ERROR、FATAL)、自定义布局、多种输出目的地(控制台、文件、数据库等)、以及过滤器和异步日志记录。通过配置XML格式的log4j.properties文件,...

    c#版本 Log4Net2.0.8版本,包含自己优化组件源码(真Log4Net)

    Log4Net 是一个流行的、开源的日志记录框架,由 Apache 软件基金会开发,主要用于.NET Framework 和 .NET Core 应用程序。这个框架提供了丰富的日志记录功能,允许开发者以灵活的方式控制应用程序中的日志输出。Log4...

    log4qt 日志管理 log4qt 日志管理log4qt 日志管理log4qt 日志管理log4qt 日志管理log4qt 日志管理

    Log4Qt是Qt框架下的一款日志记录库,它基于流行的Java日志库log4j设计,为C++开发者提供了一套强大、灵活的日志处理机制。本文将深入探讨Log4Qt日志管理的核心概念、功能特性以及如何在实际项目中有效应用。 一、...

    日志组件-仿log4j的配置

    6. **性能优化**:仿Log4j系统应考虑性能优化,例如延迟初始化(lazy initialization)只在首次使用时创建Logger,以及日志级别过滤,避免不必要的日志记录。 7. **线程安全**:由于多线程环境下的并发访问,日志...

    log4net-1.2.15组件包及使用教程(c#编程)

    本文将详细介绍log4net-1.2.15组件包的安装、配置以及如何在C#项目中进行使用。 **一、安装log4net组件包** 在开始使用log4net之前,首先需要将其添加到你的项目中。在旧版本的.NET环境中,可以通过下载log4...

    log4net 日志类封装

    log4net 是一个灵活的、高性能的日志记录框架,它可以方便地集成到各种 .NET 应用程序中,提供丰富的日志记录功能。它支持多种日志输出方式,如控制台、文件、数据库、SMTP 邮件等,且允许开发者自定义日志目标和...

Global site tag (gtag.js) - Google Analytics