最近公司要上一个项目,要用到日志系统,刚好自己最近也在学习,今天终于有些结果了,所以在这里和大家分享一下。
1.首先,需要去http://logging.apache.org/log4net/这个网站下载一个log4net.dll(我在这里用的是1.2的),并引入 到自己的项目中。
2.需要建一个WEB的项目。
2.1 建一个demo的数据库,表如下:
1CREATE TABLE [dbo].[Log]
2(
3 [Id] [int] IDENTITY (1, 1) NOT NULL,
4 [Date] [datetime] NOT NULL,
5 [Thread] [varchar] (255) NOT NULL,
6 [Level] [varchar] (50) NOT NULL,
7 [Logger] [varchar] (255) NOT NULL,
8 [Message] [varchar] (4000) NOT NULL,
9 [Exception] [varchar] (2000) NULL
10)
2.2 在Web.Config中代码如下:
配置文件的相关代码
1<?xml version="1.0"?>
2<!--
3 Note: As an alternative to hand editing this file you can use the
4 web admin tool to configure settings for your application. Use
5 the Website->Asp.Net Configuration option in Visual Studio.
6 A full list of settings and comments can be found in
7 machine.config.comments usually located in
8 \Windows\Microsoft.Net\Framework\v2.x\Config
9-->
10<configuration>
11 <!--
12 注册一下
13 -->
14 <configSections>
15 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
16 </configSections>
17 <appSettings>
18 </appSettings>
19 <connectionStrings/>
20 <system.web>
21 <!--
22 Set compilation debug="true" to insert debugging
23 symbols into the compiled page. Because this
24 affects performance, set this value to true only
25 during development.
26 -->
27 <compilation debug="true"/>
28 <!--
29 The <authentication> section enables configuration
30 of the security authentication mode used by
31 ASP.NET to identify an incoming user.
32 -->
33 <authentication mode="Windows"/>
34 <!--
35 The <customErrors> section enables configuration
36 of what to do if/when an unhandled error occurs
37 during the execution of a request. Specifically,
38 it enables developers to configure html error pages
39 to be displayed in place of a error stack trace.
40
41 <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
42 <error statusCode="403" redirect="NoAccess.htm" />
43 <error statusCode="404" redirect="FileNotFound.htm" />
44 </customErrors>
45 -->
46 </system.web>
47 <log4net>
48
49 <root>
50 <level value="ALL" />
51 <appender-ref ref="ADONetAppender" />
52 </root>
53
54 <!--
55<logger name="testApp.Logging">
56<level value="ALL"/>
57<appender-ref ref="ADONetAppender" />
58
59</logger>
60-->
61 <!--
62 相关操作代码
63 -->
64 <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
65 <bufferSize value="0" />
66 <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
67 <connectionString value="server=127.0.0.1;database=demo;user id=sa;password=sa" />
68 <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
69 <parameter>
70 <parameterName value="@log_date" />
71 <dbType value="DateTime" />
72 <layout type="log4net.Layout.RawTimeStampLayout" />
73 </parameter>
74 <parameter>
75 <parameterName value="@thread" />
76 <dbType value="String" />
77 <size value="255" />
78 <layout type="log4net.Layout.PatternLayout">
79 <conversionPattern value="%thread" />
80 </layout>
81 </parameter>
82 <parameter>
83 <parameterName value="@log_level" />
84 <dbType value="String" />
85 <size value="50" />
86 <layout type="log4net.Layout.PatternLayout">
87 <conversionPattern value="%level" />
88 </layout>
89 </parameter>
90 <parameter>
91 <parameterName value="@logger" />
92 <dbType value="String" />
93 <size value="255" />
94 <layout type="log4net.Layout.PatternLayout">
95 <conversionPattern value="%logger" />
96 </layout>
97 </parameter>
98 <parameter>
99 <parameterName value="@message" />
100 <dbType value="String" />
101 <size value="4000" />
102 <layout type="log4net.Layout.PatternLayout">
103 <conversionPattern value="%message" />
104 </layout>
105 </parameter>
106 <parameter>
107 <parameterName value="@exception" />
108 <dbType value="String" />
109 <size value="2000" />
110 <layout type="log4net.Layout.ExceptionLayout" />
111 </parameter>
112 </appender>
113 </log4net>
114</configuration>
115
特别说明<bufferSize value="0" />,这是log信息记录的缓冲大小,(比如只有log信息记录达到0,
才会将log信息记录写入数据库,呵呵,这个本应该是个数字,可是为了显示结果,所以就该为0了,
实际开发的时候最好选一个合适的数值)
2.3在在Global.asax.cs中需要完成
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
//读取配置文件信息
log4net.Config.DOMConfigurator.Configure();
}
最后,使用log建一个DEMO的类如下:
1
2using log4net;
3
4/**//// <summary>
5/// Summary description for MyLog
6/// </summary> 7public class MyLog
8{
9 private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(MyLog));
10 public MyLog()
11 {
12 //
13 // TODO: Add constructor logic here
14 //
15 }
16
17 public static void LogInfo()
18 {
19 log.Info("写LOG的相关信息!");
20 }
21
22 public static void ErrorInfo()
23 {
24 log.Info("LOG错误");
25 }
26}
说明:在这个项目中你写的方法要引用一下,要不数据库里没有结果,其数据库结果如下:
到这里就算大功告成了。