Log4Net的使用方法

五迷三道 提交于 2020-01-16 21:44:46

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

 

日志信息保存到.txt文件

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

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

在log4net-1.2.10\src下面将log4net.sln用Visual 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(Objectsender, 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>

    
<levelvalue="ALL"/>          

   
<appender-ref ref="ADONetAppender"/>      

   
</root>

   
<!--

    定义loger的名称和使用的appender

   
-->

   
<logger name="AA">

    
<levelvalue="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" />

    
<connectionStringvalue="database=Northwind;server=CEC-HUANGXX;UserID=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 。

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!