您的位置:首页 > 其它

.net项目中使用log4net记录日志

2014-12-17 15:54 573 查看



项目中使用log4net记录日志



一、准备工作

log4net源码一份,或者生成的log4net.dll文件一份
数据库中新建一张表,就叫LogCenter吧。
配置文件一份。
记录日志的方法一份。

二、开工--log4net.dll

log4net官方网站:http://logging.apache.org/log4net/
编译好的log4net.dll文件,猛击这里下载!
将log4net.dll添加引用到项目中。

三、建表

--数据库创建表
CREATETABLE[dbo].[LogCenter](
[Id][int]primarykeyIDENTITY(1,1)NOTNULL,
[Date][datetime]NOTNULL,
[Thread][varchar](255)NOTNULL,
[Level][varchar](50)NOTNULL,
[Logger][varchar](255)NOTNULL,
[Message][varchar](4000)NOTNULL,
[Exception][varchar](2000)NULL
)

四、添加配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?
xml
version="1.0"encoding="utf-8"?>

<
configuration
>

<!--这项配置必须放在configuration下面-->

<
configSections
>

<
section
name="log4net"type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>

</
configSections
>


<!--log4net配置节点-->

<
log4net
>

<
logger
name="loginfo">

<
level
value="INFO"/>

<
appender-ref
ref="AdoNetAppender_SqlServer"/>

<
appender-ref
ref="InfoAppender"/>

</
logger
>

<!--<root>

<levelvalue="ALL"/>

<appender-refref="AdoNetAppender_SqlServer"/>

<appender-refref="InfoAppender"/>

</root>-->

<
appender
name="InfoAppender"type="log4net.Appender.RollingFileAppender">

<
param
name="File"value="Log\\INFO\\"/>

<
param
name="AppendToFile"value="true"/>

<
param
name="MaxFileSize"value="10240"/>

<
param
name="MaxSizeRollBackups"value="100"/>

<
param
name="StaticLogFileName"value="false"/>

<
param
name="DatePattern"value="yyyyMMdd".txt""/>

<
param
name="RollingStyle"value="Date"/>

<
layout
type="log4net.Layout.PatternLayout">

<
param
name="ConversionPattern"value="日志时间:%dMessage:%mException:%exception%newline"/>

</
layout
>

</
appender
>

<
appender
name="AdoNetAppender_SqlServer"type="log4net.Appender.AdoNetAppender">

<!--BufferSize为缓冲区大小,只有日志记录超5条才会一块写入到数据库-->

<
bufferSize
value="0"/>

<!--2.0这是对应sql2008如是2000或2005另外配置-->

<
connectionType
value="System.Data.SqlClient.SqlConnection,System.Data,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"
/>


<!--连接数据库字符串ADO.Net类型的连接-->

<
connectionString
value="DataSource=SHOPEX-SH-A0449\FANYONG;InitialCatalog=OnlineShop;UserID=sa;Password=sa;"
/>


<!--插入到表Log-->

<
commandText
value="INSERTINTOLogCenter([Date],[Thread],[Level],[Logger],[Message],[Exception])
VALUES(@log_date,@thread,@log_level,@logger,@message,@exception)"/>


<
parameter
>

<
parameterName
value="@log_date"/>

<
dbType
value="DateTime"/>


<
layout
type="log4net.Layout.PatternLayout">

<
conversionPattern
value="%date{yyyy'-'MM'-'ddHH':'mm':'ss'.'fff}"/>

</
layout
>

<!--<layouttype="log4net.Layout.RawTimeStampLayout"/>-->

</
parameter
>

<
parameter
>

<
parameterName
value="@thread"/>

<
dbType
value="String"/>

<
size
value="255"/>

<!--LogComponent是类所在的命名空间,MyLayout是自定义属性所在的类,这是我们自己要写的部分,将在下面介绍。-->

<
layout
type="log4net.Layout.PatternLayout">

<
conversionPattern
value="%thread"/>

</
layout
>

</
parameter
>

<
parameter
>

<
parameterName
value="@log_level"/>

<
dbType
value="String"/>

<
size
value="50"/>

<
layout
type="log4net.Layout.PatternLayout">

<
conversionPattern
value="%level"/>

</
layout
>

</
parameter
>

<
parameter
>

<
parameterName
value="@logger"/>

<
dbType
value="String"/>

<
size
value="255"/>

<
layout
type="log4net.Layout.PatternLayout">

<
conversionPattern
value="%logger"/>

</
layout
>

</
parameter
>

<
parameter
>

<
parameterName
value="@message"/>

<
dbType
value="String"/>

<
size
value="4000"/>

<
layout
type="log4net.Layout.PatternLayout">

<
conversionPattern
value="%message"/>

</
layout
>

</
parameter
>

<
parameter
>

<
parameterName
value="@exception"/>

<
dbType
value="String"/>

<
size
value="2000"/>

<
layout
type="log4net.Layout.ExceptionLayout"/>

</
parameter
>

</
appender
>


</
log4net
>

</
configuration
>


五、记录日志的实现代码

Implementation:
usingSystem;

namespaceLog4netTet

{

///<summary>

///日志操作类

///</summary>

publicclassLogWrite

{

privateLogWrite()

{

//构造函数设置配置文件

SetConfig();

}

//创建一个log4net对象

//

privatestaticreadonlylog4net.ILoglogInfo=log4net.LogManager.GetLogger("loginfo");

privatestaticboolIsLoadConfig=false;

//设置配置文件

//

privatestaticvoidSetConfig()

{

log4net.Config.XmlConfigurator.Configure();

}

///<summary>

///记录异常信息

///</summary>

///<paramname="info">错误提示信息</param>

publicstaticvoidWriteLog(stringinfo)

{

if(!IsLoadConfig)

{

SetConfig();

IsLoadConfig=true;

}

if(logInfo.IsInfoEnabled)

{

logInfo.Info(info);

}

}

publicstaticvoidWriteLog(stringinfo,Exceptionex)

{

if(!IsLoadConfig)

{

SetConfig();

IsLoadConfig=true;

}

if(logInfo.IsErrorEnabled)

{

logInfo.Error(info,ex);

}

}

}

}

六、测试代码

因为实现代码LogWrite类中是静态方法,所以调用的时候不用实例化,简单调用即可。

protectedvoidbtnLog4net_Click(objectsender,EventArgse){//普通日志消息

Log4netTest.LogWrite.WriteLog(“测试消息");

//异常信息

Log4netTest.LogWrite.WriteLog(“报异常了",newException(“这是异常信息啊"));


}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: