首先需在config文件的<configSections>节点中增加子节点配置。
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
 
接着在<configuration>节点下配置我们定义的log4net 节点
log4net节点下可以配置多个<appender>子节点,每个<appender>子节点代表一种日志记录方式,有以下几种:
 
AdoNetAppender:利用ADO.NET记录到数据库的日志。
AnsiColorTerminalAppender:在ANSI 窗口终端写下高亮度的日志事件。
AspNetTraceAppender:能用asp.net中Trace的方式查看记录的日志。
BufferingForwardingAppender:在输出到子Appenders之前先缓存日志事件。
ConsoleAppender:将日志输出到控制台。
EventLogAppender:将日志写到Windows Event Log. 
FileAppender:将日志写到文件中。
LocalSyslogAppender:将日志写到local syslog service (仅用于UNIX环境下). 
MemoryAppender:将日志存到内存缓冲区。
NetSendAppender:将日志输出到Windows Messenger service.这些日志信息将在用户终端的对话框中显示。
RemoteSyslogAppender:通过UDP网络协议将日志写到Remote syslog service。
RemotingAppender:通过.NET Remoting将日志写到远程接收端。
RollingFileAppender:将日志以回滚文件的形式写到文件中。
SmtpAppender:将日志写到邮件中。
TraceAppender:将日志写到.NET trace 系统。
UdpAppender:将日志connectionless UDP datagrams的形式送到远程宿主或以UdpClient的形式广播。
 
本文将介绍常用的FileAppender 、RollingFileAppender、 ConsoleAppender、AdoNetAppender 这三种记录方式的相关配置。
首先看看FileAppender
<!--定义输出到文件中-->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<!--定义文件存放位置-->
<file value="D:\123.txt" />
<!--是否追加到文件-->
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />
</layout>
</appender>
 
RollingFileAppender
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--日志路径-->
<param name= "File" value= "D:\App_Log\servicelog\"/>
<!--是否是向文件中追加日志-->
<param name= "AppendToFile" value= "true"/>
<!--log保留天数-->
<param name= "MaxSizeRollBackups" value= ""/>
<!--日志文件名是否是固定不变的-->
<param name= "StaticLogFileName" value= "false"/>
<!--日志文件名格式为:--.log-->
<param name= "DatePattern" value= "yyyy-MM-dd&quot;.read.log&quot;"/>
<!--日志根据日期滚动-->
<param name= "RollingStyle" value= "Date"/>
<layout type="og4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n %loggername" />
</layout>
</appender>
ConsoleAppender
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ERROR" />
<foreColor value="Red, HighIntensity" />
</mapping>
<mapping>
<level value="Info" />
<foreColor value="Green" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%n%date{HH:mm:ss,fff} [%-5level] %m" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Info" />
<param name="LevelMax" value="Fatal" />
</filter>
</appender>
 
AdoNetAppender
<appender name="ErrorLog_DBLog" type="log4net.Appender.AdoNetAppender">
<bufferSize value="" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="data source= 172.17.22.12:1101;initial catalog=Gance;persist security info=True;user id=Fie_DEV;password=F_DEVDEV;Persist Security Info=True;" />
<commandText value="insert into [ErrorLog] ([ID],[LogMessage],[LogException],[Source],[LogDate],[LogLevel],[UserId],[LogModule],[ServerIp]) values (@id,@message,@exception, @source, @date, @level,@userid,@logmodule,@serverip)" />
<parameter>
<parameterName value="@id" />
<dbType value="String" />
<size value="" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="Id" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="-1" />
<layout type="log4net.Layout.PatternLayout" value="%message" />
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="-1" />
<layout type="log4net.Layout.PatternLayout" value="%exception" />
</parameter>
<parameter>
<parameterName value="@source" />
<dbType value="String" />
<size value="" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="Source" />
</layout>
</parameter>
<parameter>
<parameterName value="@date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout"/>
</parameter>
<parameter>
<parameterName value="@level" />
<dbType value="String" />
<size value="" />
<layout type="log4net.Layout.PatternLayout" value="%level" />
</parameter>
<parameter>
<parameterName value="@userid" />
<dbType value="String" />
<size value="" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="UserId" />
</layout>
</parameter>
<parameter>
<parameterName value="@logmodule" />
<dbType value="Int16" />
<layout type="log4net.Layout.PatternLayout" value="%property{LogModule}" />
</parameter>
<parameter>
<parameterName value="@serverip" />
<dbType value="String" />
<size value="" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="ServerIp" />
</layout>
</parameter>
</appender>
 配置参数
 

轉換字符

效果

a

等同於 appdomain

appdomain

用于输出日誌事件發生的AppDomain的一個友好的名字

c

等同於logger

C

等同於type

class

等同於type

d

等同於date

date

用於輸出日誌事件在當前時區中的日期.若要輸出通用時間,請使用%utcdate模式.日期轉換指定符後可以跟隨一對閉合的花括號, 花括號裡面為日期格式指定符.例如: %date{HH:mm:ss,fff}或%date{dd MMM yyyy HH:mm:ss,fff},若沒有指定任何格式,默認為ISO8601(Iso8601DateFormatter).格式指定符和TOString的語法一樣.為了達到較好的效果,建議使用log4net日期格式化器.他們可以使用以下一個字符串”ABSOLUTE”,”DATE”,”ISO8601”來分別指定AbsoluteTimeDateFormatterDateTimeDateFormatter和Iso8601DateFormatter.例如: %date{ISO8601} or %date{ABSOLUTE}.這些專用的日期格式化器效果比ToString好很多.

exception

用於輸出連同日誌信息一起傳入的異常.如果一個異常對象被儲存在日誌記錄事件中,他將會被帶有trailing newline的模式輸出.否則,不會.

F

等同於 file

file

用於輸出引發日誌記錄請求的文件名稱.例如: c:\inetpub\wwwroot\logtest\webform1.aspx.cs警告:產生呼叫者的位置信息相當慢.盡量避免使用,除非執行速度不是問題.

identity

用於輸出當前用戶的用戶名(Principal.Identity.Name).警告:產生呼叫者的位置信息相當慢.盡量避免使用,除非執行速度不是問題.

l

等同於location

L

等同於line

location

用於輸出產生日誌記錄事件的呼叫者的位置信息.此位置信息依賴於CLI的實現,但是他通常為命名空間限制的方法且後用跟用圓括號括起來的呼叫者文件名和行號.例如:LogTest.WebForm1.Button3_Click(c:\inetpub\wwwroot\logtest\webform1.aspx.cs:93)位置信息非常有用.然而,他的產生相當慢. 盡量避免使用,除非執行速度不是問題.

level

用於輸入記錄事件的等級.

line

用於輸出引發日誌記錄請求的行號.警告:產生呼叫者的位置信息相當慢.盡量避免使用,除非執行速度不是問題.

logger

用於輸出日誌記錄事件的日誌名字.這個日誌轉換符後面可以跟精度,精度是十進制常量,用花括號括起來.如果指定了精度符,則只會輸出從右向左的相應數目的名字,默認為輸入全部.如下:日誌記錄器的名字為”a.b.c”, %logger{2}將會輸出”b.c”

m

等同於message

M

等同於 method

message

用於輸出應用程式提供給日誌記錄事件的信息.

mdc

MDC(舊名: ThreadContext.Properties)是聯合事件屬性的一部份.這個模式支持兼容性,但是等同於property.

method

用於輸出引發日誌記錄請求的方法的名字.警告:產生呼叫者的位置信息相當慢.盡量避免使用,除非執行速度不是問題.

n

等同於 newline

newline

換行,等同於”\n”或”\r\n”

p

等同於 level

P

等同於 property

properties

等同於 property

property

用於輸出一個事件的指定的屬性.屬性名字要以花括號括起來並且直接放到property後面.例如:%property{user}.日誌中的每一個屬性指都需要單獨指定.Properties是日誌記錄器或追加器添加到事件中的.默認屬性為log4net:HostName,它是引發產生記錄事件的機器名字.若果沒有指定關鍵字,比如: %property ,將會將鍵值以逗號分格列表

r

等同於 timestamp

t

等同於thread

timestamp

用於輸出從程式啟動到日誌記錄事件建立的時間,以毫秒記.

thread

用於輸出引發日誌記錄事件的線程的名字,若無線程名,則用線程號.

type

所用同logger警告:產生呼叫者的位置信息相當慢.盡量避免使用,除非執行速度不是問題.

u

等同於 identity

username

用於輸出當前用戶的WindowsIdentity警告:產生呼叫者的位置信息相當慢.盡量避免使用,除非執行速度不是問題.

utcdate

使用同date

w

等同於 username

x

等同於 ndc

X

等同於 mdc

%

%%輸出一個%

Log4net 配置详解的更多相关文章

  1. log4Net配置详解

    <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSe ...

  2. Log4Net使用详解

    1.Log4Net环境的搭建与基本配置 (1)Log4Net框架介绍     Log4net 是 Apache 下一个开放源码的项目,它是Log4j 的一个克隆版.我们可以控制日志信息的输出目的地.L ...

  3. (转)log4net使用详解

    说明:本程序演示如何利用log4net记录程序日志信息.log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括M ...

  4. 转:log4net使用详解

    说明:本程序演示如何利用log4net记录程序日志信息.log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括M ...

  5. Log4j配置详解(转)

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  6. logback 常用配置详解<appender>

    logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...

  7. [转]阿里巴巴数据库连接池 druid配置详解

    一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...

  8. libCURL开源库在VS2010环境下编译安装,配置详解

    libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...

  9. logback配置详解3<filter>

    logback 常用配置详解(三) <filter> <filter>: 过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一.返回DENY ...

随机推荐

  1. Codeforces 56D Changing a String

    http://codeforces.com/contest/56/problem/D 题目大意: 一个字符串变为目标字符串,可以执行插入,置换和删除3种操作,求最少操作数. 思路:dp[i][j]代表 ...

  2. zabbix 添加自定义key

    vim /etc/zabbix/zabbix_agentd.conf UserParameter=zjzc.login,/bin/sh /usr/sbin/get_login.sh UserParam ...

  3. dos判断系统版本的语句,

    是我在单位批量安装软件使用的批处理,判断方法如下,仅供参考,本人不懂任何编程,大家凑合着看: winxp和win7判断: net config workstation |(find /i " ...

  4. pip 错误Requested **, but installing version **

    使用pip升级时,虽然指定了版本,也使用了--upgrade参数,但pip就是不升级,Requested **, but installing version **,手动删了源文件也不行.后来发现一个 ...

  5. 湖南生第八届大学生程序设计大赛原题 C-Updating a Dictionary(UVA12504 - Updating a Dictionary)

    UVA12504 - Updating a Dictionary 给出两个字符串,以相同的格式表示原字典和更新后的字典.要求找出新字典和旧字典的不同,以规定的格式输出. 算法操作: (1)处理旧字典, ...

  6. 初识前端HTML

    HTML 超文本标记语言 HTML的解析 顾名思义,HTML就是由一个个的标签组成的,组成后,HTML可被浏览器直接识别以及处理成我们想给用户展示的样子. 下面我们就来解析HTML的一个个标签. &l ...

  7. 为人们服务的asp.net 验证控件

    ASP.NET是微软推出的WEB开发工具,他有很强大的功能,今天看视频讲到验证控件这一部分,真的感受到了微软全心全意为人民服务了.越来越佩服微软了,人家都设计出来了,咱们一定要会用才可以啊,不然太…. ...

  8. C/C++变量命名规则

    变量命名规则是为了增强代码的可读性和easy维护性. 变量命名规则: 一.用最短字符表示最准确的意义. 二.使用变量前缀. 1.  整型前缀 int               nId;        ...

  9. WebSphere之wasprofile.sh使用

    概要文件(profile) 6.0版本以后才有profile,目的是将用户数据和was本身的文件分开,这样可以定义多个profile,每个profile相当于一个用户,相当于提供了多用户的支持. pr ...

  10. IP转发和子网路由

    IP地址的分类 在TCP/IP协议中,协议栈分为4层.从上到下依次是应用层.运输层.网络层.网络接口层. IP协议就工作在网络层.IP协议将纷繁复杂的物理层协议屏蔽掉,对上层提供统一的描述和管理服务. ...