首先需在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. JDBC开发模式

    一]代码模块———Demo.java public class Demo { private static Connection connection; private static Statemen ...

  2. MyBatis里json型字段到Java类的映射

    一.简介 我们在用MyBatis里,很多时间有这样一个需求:bean里有个属性是非基本数据类型,在DB存储时我们想存的是json格式的字符串,从DB拿出来时想直接映射成目标类型,也即json格式的字符 ...

  3. 转:什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?

    什么是CGI CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上. CGI可以用 ...

  4. 11G在线重建索引

    SQL> select count(*) from test_idx; COUNT(*) ---------- 19087751 SQL> select segment_name,segm ...

  5. NOI2015

    D1T1 并查集. #include<cstdio> #include<cstdlib> #include<iostream> #include<fstrea ...

  6. NET分布式缓存Memcached测试体验

    原文地址:http://onlyonewt.blog.sohu.com/160168896.html 一直在学习关注大访问量网站的缓存是如何实现,之前看过Memcached的资料,忙于没有时间来真正测 ...

  7. MYSQL查询男女数量的存储过程

    存储过程代码: BEGIN IF sex_id =0 THEN SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='女' INTO sex_co ...

  8. 图片实时预览JSP加js

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. Oracle—RMAN备份(三)

    一.增量备份的相关概念 1. 在前面说明了RMAN的完整备份,完整备份是备份所用使用过的块,不备份没有使用的过的块:增量备份只备份自上次备份以来更改过的块. 2.即使RMAN的默认操作是在增量备份时扫 ...

  10. C#基础:命令解析

    1.普通格式命令的解析 例如: RENA<SP>E:\\A.txt<SP>C:\\B.txt<CRLF> (SP -> 空格,CRLF -> 回车加换行 ...