图片 1

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

图片 2

图片 3

图片 4

  1.  Logger:重要担负日志的记录,它记录之措施发生多种,可以是以文件、数据库、控制台、邮件等多地处格局;
  2. Appenders:紧要承担记录日志介质的办法,它的出口格局要包括:
 1     CREATE TABLE [dbo].[ErrorLog](   
 2 
 3     [nId] [bigint] IDENTITY(1,1) NOT NULL,   
 4 
 5     [dtDate] [datetime] NOT NULL,   
 6 
 7     [sThread] [varchar](100) NOT NULL,   
 8 
 9     [sLevel] [varchar](200) NOT NULL,   
10 
11     [sLogger] [varchar](500) NOT NULL,   
12 
13     [sMessage] [varchar](3000) NOT NULL,   
14 
15     [sException] [varchar](4000) NULL)

     Log4net是基于.NET开发之相同慢记录日志开源组件。它经过一样法XML配置的日志引擎,将日志分不同的等,分别是:FATAL
、 ERROR、 WARN、 INFO 、
DEBUG、ALL(允许有的日志请求)和OFF(拒绝所有的日记请求),缺省为DEBUG,前四个是不是卓殊熟知?可以望跟我们平日在调试应用程序的错有点类似,在编译器中也会留下如左、警告之类的提醒信息,它们的荒谬级别在相连的骤降。

结果
 

     在全局处理程序中添加如下代码:

    • AdoNetAppender:将日志记录及数据库中。可以用SQL和储存过程少种植办法
    • AspNetTraceAppender:能就此ASP.NET中跟踪的办法查看记录的日志。

    • BufferingForwardingAppender:在输出到子Appenders此前先缓存日志事件。

    • ColoredConsoleAppender:在极限的窗口写下后来居上亮度的日志事件。

    • ConsoleAppender:将日志输出到控制台。

  Thread:执行时代码的线程。

     log4net库是Apache log4j框架在Microsoft
.NET平台的贯彻,是一个援程序员将日志信息输出及各个目标(控制台、文件、数据库等)的工具。
     log4net是Apache软件基金会Apache Logging
瑟维斯(Service)s工程的同样局部。Apache日志服务工程从为为程序调试和审计提供跨语言的日记服务。(f:百度百科)

        %timestamp [%thread] %-5level %logger{2} %ndc –
%message%newline

图片 5

     在页面添加button和一个label,在button的单击事件被补充加如下代码:

案例一:文件记录道

 1         protected void btnShowTime_Click(object sender, EventArgs e)
 2         {
 3             log4net.ILog myLogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
 4             myLogger.Warn("这是一个警告日志");
 5             myLogger.Info("单击了按钮");
 6             myLogger.Debug("用Log4Net写入数据库日志");
 7             myLogger.Error("这是一个错误日志");
 8             myLogger.Fatal("这是一个致命的错误日志");
 9             try
10             {
11                 ILog logger = LogManager.GetLogger("LogRecord");
12                 logger.Debug("用Log4Net写入数据库日志");
13                 int x = 5;
14                 int y = 0;
15                 Response.Write(x / y);
16             }
17             catch (Exception ex)
18             {
19                 myLogger.Error(ex);
20             }
21             finally
22             {
23                 lblShow.Text = DateTime.Now.ToLongTimeString()+":操作日志已记录完成";
24             }
25         }

测试
     采纳地点的测试方法。

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <configuration>
 3   <configSections>
 4     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
 5   </configSections>
 6   <!--Log4net Begin-->
 7   <log4net>
 8     <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
 9       <bufferSize value="1" />
10       <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
11       <connectionString value="SERVER=127.0.0.1;DATABASE=TestDataBase;UID=sa;PWD=123456;Connect Timeout=15;" />
12       <commandText value="INSERT INTO ErrorLog ([dtDate],[sThread],[sLevel],[sLogger],[sMessage],[sException]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
13       <parameter>
14         <parameterName value="@log_date" />
15         <dbType value="DateTime" />
16         <layout type="log4net.Layout.RawTimeStampLayout" />
17       </parameter>
18       <parameter>
19         <parameterName value="@thread" />
20         <dbType value="String" />
21         <size value="100" />
22         <layout type="log4net.Layout.PatternLayout">
23           <conversionPattern value="%t" />
24         </layout>
25       </parameter>
26       <parameter>
27         <parameterName value="@log_level" />
28         <dbType value="String" />
29         <size value="200" />
30         <layout type="log4net.Layout.PatternLayout">
31           <conversionPattern value="%p" />
32         </layout>
33       </parameter>
34       <parameter>
35         <parameterName value="@logger" />
36         <dbType value="String" />
37         <size value="500" />
38         <layout type="log4net.Layout.PatternLayout">
39           <conversionPattern value="%logger" />
40         </layout>
41       </parameter>
42       <parameter>
43         <parameterName value="@message" />
44         <dbType value="String" />
45         <size value="3000" />
46         <layout type="log4net.Layout.PatternLayout">
47           <conversionPattern value="%m" />
48         </layout>
49       </parameter>
50       <parameter>
51         <parameterName value="@exception" />
52         <dbType value="String" />
53         <size value="4000" />
54         <layout type="log4net.Layout.ExceptionLayout" />
55       </parameter>
56     </appender>
57     <!-- setup the root category, add the appenders and set the default level -->
58     <root>
59       <level value="WARN"/>
60       <level value="INFO"/>
61       <level value="DEBUG"/>
62       <level value="FINE"/>
63       <appender-ref ref="ADONetAppender" />
64     </root>
65     <!-- specify the level for some specific categories -->
66     <logger name="iNotes">
67       <level value="WARN"/>
68       <level value="INFO"/>
69       <level value="DEBUG"/>
70       <level value="FINE"/>
71       <appender-ref ref="ADONetAppender"/>
72     </logger>
73     <logger name="StellaLogger">
74       <level value="ALL"/>
75       <appender-ref ref="AdoNetAppender" />
76     </logger>
77   </log4net>
78   <!--Log4net End-->
79 </configuration>

案例二:日志记入数据库

     创造记录日志的数据表:

  Logger:日志相关请求的称呼。

      %d, %date :表示当然的岁月
  %level : 表示日志的级别
  %logger, %c:表示日志发生的焦点,常常是所当的类名,便于定位问题
  %m, %message :表示日志的具体内容
  %n, %newline: 换行

图片 6

  newline:换行。

    
首先引述Log4net.dll,然后于加上一个布局文件log4net.config(这里不以布音信写入web.config,个人觉得写在齐实在太乱)中补充加下边的安排消息(注意应跟web.config处于同一之职,即到底目录下):

     项目蒙时下的少种艺术以此做一下总。其他方法,用到了双重续及。

      图片 7

    3.Layouts:首要担负把记录日志格式化输出,突显得格式主要如下:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <configuration>
 3   <!--日志配置部分-->
 4   <configSections>
 5     <!--注册lognet-->
 6     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
 7   </configSections>
 8   <log4net debug="false">
 9     <root>
10       <priority value="ALL"/>
11       <appender-ref ref="TraceAppender"/>
12       <appender-ref ref="ConsoleAppender"/>
13       <appender-ref ref="RollingFileAppender"/>
14     </root>
15     <appender name="TraceAppender" type="log4net.Appender.TraceAppender">
16       <layout type="log4net.Layout.PatternLayout">
17         <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline"/>
18       </layout>
19     </appender>
20     <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
21       <layout type="log4net.Layout.PatternLayout">
22         <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline"/>
23       </layout>
24     </appender>
25     <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
26       <file value="Log\SysLog"/>
27       <!--日志文件夹及文件名开头-->
28       <appendToFile value="true"/>
29       <!--是否追加到文件-->
30       <RollingStyle value="Date"/>
31       <!--日期的格式-->
32       <DatePattern value="yyyy-MM-dd"/>
33       <!--文件名后面加上.log后缀,必须使用转义字符-->
34       <maximumFileSize value="1MB" />
35       <!--最大文件大小-->
36       <StaticLogFileName value="false"/>
37       <!--日志文件名是否为静态-->
38       <layout type="log4net.Layout.PatternLayout,log4net">
39         <param name="ConversionPattern" value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline"/>
40         <param name="Header" value=" ------------------网站运行过程中产生的错误-------------------------- "/>
41         <param name="Footer" value=" -----------------测试:GZQ------------------------------------- "/>
42       </layout>
43     </appender>
44   </log4net>
45   <!--End站点日志配置部分-->
46 </configuration>

图片 8

    • 伊芙ntLogAppender:将日志写到Windows操作系统的日记中错过。
    • FileAppender:将日志写及文件中。
    • ForwardingAppender:用来也一个Appender指定一组约束。
    • MemoryAppender:将日志存到外存缓冲区。
    • NetSendAppender:将日志输出到Windows Messenger
      service,这个日记信息将于用户终端的对话框中显得。
    • OutputDebugStringAppender:配置该Appender以向OutputDebugString
      API写副日志。
    • RemotingAppender:通过.NET Remoting将日志写及长途接收端。
    • RollingFileAppender:将日志以回滚文件的款型写到文件中。
    • SmtpAppender:将日志写及邮件中。
    • SmtpPickupDirAppender:配置与SmtpAppender类似,但要把SmtpHost换为PickupDir。
    • TraceAppender:将日志写及.NET trace 系统。
    • UdpAppender:将日志connectionless UDP
      datagrams的格局送及长途宿主或为UdpClient的花样播放。

    
以上有些输出形式可能会见平日用(比如写副文件以及数据库的艺术),有些可能会面不通常接纳(邮件模式等),具体我们当下边举例来验证。

简介

图片 9

  Level:日志的级别。

结语

原理

      记入数据库的主意以及记入文件之法门安顺小异,重要分在部署文件,其他步骤同,记入数据库的部署文件log4net.config如下:

  timestamp: 表示程序都开执行的岁月。 单位[毫秒]。

本文转载:http://www.cnblogs.com/wolf-sun/p/3347373.html#3009010

图片 10

结果

log4net开源路布局如图所示:图片 11

图片 12

图片 13

     在AssemblyInfo.cs中补充加如下代码:

1         protected void Application_Start(object sender, EventArgs e)
2         {
3             log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));
4         }

    
通过翻看源码,log4net首要出5独主旨部分构成,分别吗Logger,Appenders,
Filters, Layouts 和Object Renders,在配备文件被她为节点的款式出现。

测试

  Message:日志音。

相关文章

网站地图xml地图