日志写入文件,写入sqlserver数据库(自定义参数)

来源:互联网 发布:淘宝客服电话人工按几 编辑:程序博客网 时间:2024/06/13 09:26

日志写入文件,写入sqlserver数据库(自定义参数),成功例子

1.配置文件

<?xml version="1.0" encoding="utf-8"?>


<!--
有关如何配置 ASP.NET 应用程序的详细消息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
-->

<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler" /><!--写入文件-->
<section name="log4netInsertDatabase" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>

<!-- This section contains the log4net configuration settings -->
<log4net>
<root>
<level value="ALL" name="myLogger" />
<appender-ref ref="rollingFile" /><!--写入文件-->
<appender-ref ref="ADONetAppender"/>
</root>

<!--写入文件-->
<appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="D:\log.txt" />
<param name="AppendToFile" value="false" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy.MM.dd" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value="header" />
<param name="Footer" value="footer" />
</layout>
</appender>
<!--写入文件-->
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>

<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender,log4net">
<!--BufferSize为缓冲区大小,只有日志记录超1条才会一块写入到数据库-->
<bufferSize value="1"/>
<!--或写为<param name="BufferSize" value="10" />-->
<!--引用-->
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<!--连接数据库字符串-->
<connectionString value="server=192.168.21.97;database=GenrerConfigWebWaterConservancy;uid=sa;pwd=aA123456;MultipleActiveResultSets=True"/>
<!--插入到表Log-->
<commandText value="INSERT INTO [Log] ([UserID],[RTime],[UserIP],[Operate]) VALUES (@UserID,@RTime, @UserIP, @Operate)"/>
<!--日志类型,这里均为3-->
<parameter>
<parameterName value="@UserID"/>
<dbType value="Int32"/>
<layout type="WebApplication1.MyLayout, WebApplication1">
<param name="ConversionPattern" value="%property{UserID}"/>
<!--//注意这里,当用到property时,就表明这是用户自定义的字段属性啦,是log4net中所没有提供的字段。其中MyLayout是自定义属性所在的类,
LogComponent是类所在的命名空间,这是我们自己要写的部分,将在下面介绍。-->
</layout>
</parameter>
<!--日志记录时间,RawTimeStampLayout为默认的时间输出格式 -->
<parameter>
<parameterName value="@RTime"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout"/>
</parameter>
<!--计算机IP-->
<parameter>
<parameterName value="@UserIP"/>
<dbType value="String"/>
<size value="50"/>
<layout type="WebApplication1.MyLayout, WebApplication1">
<param name="ConversionPattern" value="%property{UserIP}"/>
</layout>
</parameter>
<!---->
<parameter>
<parameterName value="@Operate"/>
<dbType value="String"/>
<size value="50"/>
<layout type="WebApplication1.MyLayout, WebApplication1">
<param name="ConversionPattern" value="%property{Operate}"/>
</layout>
</parameter>
</appender>

<logger name="Log4NetTest.LogTest">
<level value="DEBUG" />
<appender-ref ref="rollingFile" />
<appender-ref ref="coloredConsoleApp" />
<appender-ref ref="SystemEvent" />
</logger>
</log4net>
</configuration>


2. layout文件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using log4net.Layout;


namespace WebApplication1
{
       public class MyLayout : PatternLayout
        {
            public MyLayout()
            {
                this.AddConverter("property", typeof(MyMessagePatternConverter));
            }
        }
}


3.实体类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;


namespace WebApplication1
{
    public class LogContent
    {
        public LogContent(int UserID, DateTime RTime, string UserIP, string Operate)
        {
            _UserID = UserID;
            _RTime = RTime;


            _UserIP = UserIP;
            _Operate = Operate;
        }


        int _UserID;
        /// <summary>
        ///用户ID
        /// </summary>
        public int UserID
        {
            get { return _UserID; }
            set { _UserID = value; }
        }
        DateTime  _RTime;
        /// <summary>
        /// 日志分类描述,自定义
        /// </summary>
        public DateTime RTime
        {
            get { return _RTime; }
            set { _RTime = value; }
        }
        string _UserIP;
        /// <summary>
        /// 计算机IP
        /// </summary>
        public string UserIP
        {
            get { return _UserIP; }
            set { _UserIP = value; }
        }
        string _Operate;
        /// <summary>
        ///
        /// </summary>
        public string Operate
        {
            get { return _Operate; }
            set { _Operate = value; }
        }
       
    }
}

4、程序调用

        protected void Page_Load(object sender, EventArgs e)
        {
            log.Debug("这是我在使用Log4Net");


        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            log4net.ILog log = log4net.LogManager.GetLogger("myLogger");
           DateTime dt= DateTime.Now;
            log.Info(new LogContent(1,dt,"10.1.0.111","dsdfsdfsdf"));
        }

原创粉丝点击