zoukankan      html  css  js  c++  java
  • log4Net介绍和使用

     

    log4Net使用

    介绍日志保存到文本文件和ms sql server的方法

    logweb示例项目 Logtxt文件夹下面为保存到文本文件的完整配置文件,LogSql文件夹下面为保存到数据库ms sql server的完整配制文件

    源代码下载

    日志信息保存到.txt文件

    1 http://logging.apache.org/log4net/downloads.html 下载

    下载incubating-log4net-1.2.10.Zip文件,解压

    log4net-1.2.10\src下面将log4net.slnVisual Studio .NET打开,编译后可以得到log4net.dll

    你在解压的文件夹下面还可以看到examples\net\1.0,你将cs-examples方案打开,将看到多个例子子,是学习的好资料

    2 新建项目logweb,添加引用log4net.dll

    3 在文件AssemblyInfo.cs下面加入

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

    其中是ConfigFile="web.config" 的web.config是你的配置文件名称,

    这将在第5步中提到

    你将该代码加入Global.asax文件中的namespace前面也可以

    4 在文件Global.asax

     protected void Application_Start(Object sender, EventArgs e)

             {

                  log4net.Config.XmlConfigurator.Configure();

             }

    5 定义配置文件

    配置信息可以放在任意的文件中。

    可以是在程序的配置文件里,如AssemblyName.config web.config.

    也可以是你取的任意名称的文件AppName.exe.Resc

    log4net框架会在相对于AppDomain.CurrentDomain.BaseDirectory 属性定义的目录路径下查找配置文件。框架在配置文件里要查找的唯一标识是<log4net>标签。一个完整的配置文件的例子如下

    <log4net debug="false">

          <!-- 定义根日志对象 里面只有两个属性 level 和 appender-ref

               level 一个

               appender-ref 可以多个 即定义支持使用的多个Appender对象

            -->

         <root>

           

            <level value="DEBUG" />

            <appender-ref ref="LogFileAppender" />

        </root>

        <!-- 具体定义支持某个Appender对象

             LogFileAppender为Appender对象的名称

             type为Appender对象的类型

                有如下的

                 log4net.Appender.AdoNetAppender;

                log4net.Appender.UdpAppender;

               log4net.Appender.ConsoleAppender

               在命名空见log4net.Appender下面还有很多

               如果下载了,去文件:log4net-1.2.10\doc\release\config-examples.html

               上面还有很多例子

              

               不同的Appender对象还有不同的param

               具体可以去config-examples.html

            -->

         <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >

             <!--

                定义文件和文件的路径 ,特别注意

                如果未有指定路径有可能出现错误 ,具体原因目前不清楚

               

             -->

             <param name="File" value="C:\Applog.txt" />

            

             <param name="datePattern" value="yyyy-MM-dd HH:mm" />

             <!--

              -->

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

             <!--

              -->

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

                 <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />

             </layout>

         </appender>

    </log4net>

    我们逐步描述下我们使用的日志:

         <root>

            <level value="DEBUG" />

            <appender-ref ref="LogFileAppender" />

        </root>

    root代表

    代表了根日志 <level value="DEBUG" /> 代表了日志级别

    <root>标签里,可以定义level级别值和Appender的列表。如果没有定义LEVEL的值,则缺省为DEBUG。可以通过<appender-ref>标签定义日志对象使用的Appender对象。<appender-ref>声明了在其他地方定义的Appender对象的一个引用。在一个logger对象中的设置会覆盖根日志的设置。而对Appender属性来说,子日志对象则会继承父日志对象的Appender列表。

    <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >

    定义子日志对象 ,不同的Appender对象还有不同的param ,具体可以去config-examples.html

    6 在界面WebForm1.aspx上面

    拖放一个button 在事件里面写如代码:

    log4net.ILog log = log4net.LogManager.GetLogger("AA");           //log.Logger.Name

    log.Debug("这是我在使用Log4Net");

    运行应用程序,点击button 。

    C:\下面打开文件Applog.txt 可以看到我们写的日志

    日志信息保存到MSSQL数据库中

    1-4步骤与将“日志信息保存到.txt文件”相同

    5         建立数据表 假如

     CREATE TABLE [dbo].[Log] (

           [Id] [int] IDENTITY (1, 1) NOT NULL,

           [Date] [datetime] NOT NULL,

           [Thread] [varchar] (255) NOT NULL,

           [Level] [varchar] (50) NOT NULL,

           [Logger] [varchar] (255) NOT NULL,

           [Message] [varchar] (4000) NOT NULL,

           [Exception] [varchar] (2000) NULL

    )

    6          定义日志文件 其中注释处为注意的地方,特注意要写好连接的数据库的字符串。

    <configSections>

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

    </configSections>

    <log4net debug="false">

        <root>

        <level value="ALL" />          

        <appender-ref ref="ADONetAppender" />      

        </root>

        <!--

         定义loger的名称和使用的appender

        -->

        <logger name="AA">

        <level value="ALL"/>           

        <appender-ref ref="ADONetAppender" />                  

        </logger>       

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

         <!--

         定义几条存入数据库 有2条时才写入数据库,没有两条叫缓存

        -->

         <bufferSize value="2" />

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

         <connectionString value="database=Northwind;server=CEC-HUANGXX;User ID=sa;Password=sa" />

         <commandText value="INSERT INTO Log ([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.RawTimeStampLayout" />

         </parameter>

         <parameter>

              <parameterName value="@thread" />

              <dbType value="String" />

             <size value="255" />

              <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>

    7 在界面WebForm1.aspx上面

    拖放一个button 在事件里面写如代码:

    log4net.ILog log = log4net.LogManager.GetLogger("AA");           //log.Logger.Name

    log.Debug("这是我在使用Log4Net");

    运行应用程序,多次点击button 。

    在数据库里面去查询,就可以看到日中记录

  • 相关阅读:
    腾讯2014年实习生招聘笔试面试经历
    Unity MVC框架 StrangeIoC
    Android入门第八篇之GridView(九宫图)
    拓扑排序
    C:打印菱形(自己的方法)
    JSP中Session的使用
    继承Application实现Android数据共享
    使用Java高速实现进度条
    首次启动优美新手指引tip
    递归算法
  • 原文地址:https://www.cnblogs.com/dragonsuc/p/log4Net.html
Copyright © 2011-2022 走看看