当前位置:Gxlcms > 数据库问题 > log4net 写数据到sql数据库

log4net 写数据到sql数据库

时间:2021-07-01 10:21:17 帮助过:31人阅读

1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <root> <level value="ALL"></level> <appender-ref ref="ADONetAppender"/> </root> <!-- SQL数据库--> <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender"> <bufferSize value="1"/> <!-- SQL数据源 ,本地安装SQL客户端--> <connectionType value="System.Data.SqlClient.SqlConnection,System.Data, Version=1.0.3300.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" /> <connectionString value="database=ASM_UserManger;server=xxxxxx;User ID=xxx;Password=xxxx" /> <commandText value="INSERT INTO ASM_Log ([Log_Object],[Log_Type],[Log_Content],[Log_Url],[au_ID]) VALUES (@Log_Object,@Log_Type, @Log_Content, @Log_Url, @au_ID)"/> <parameter> <parameterName value="@Log_Object"/> <dbType value="String"/> <size value="200"/> <layout type="LogTest.MyLayout, LogTest" > <param name="ConversionPattern" value="%property{Log_Object}"/> </layout> </parameter> <parameter> <parameterName value="@Log_Type"/> <dbType value="String"/> <size value="200"/> <layout type="LogTest.MyLayout, LogTest" > <param name="ConversionPattern" value="%property{Log_Type}"/> </layout> </parameter> <parameter> <parameterName value="@Log_Content"/> <dbType value="String"/> <size value="2000"/> <layout type="LogTest.MyLayout, LogTest" > <param name="ConversionPattern" value="%property{Log_Content}"/> </layout> </parameter> <parameter> <parameterName value="@Log_Url"/> <dbType value="String"/> <size value="100"/> <layout type="LogTest.MyLayout, LogTest" > <param name="ConversionPattern" value="%property{Log_Url}"/> </layout> </parameter> <!-- 自定义成员 --> <parameter> <parameterName value="@au_ID" /> <dbType value="Int32" /> <layout type="LogTest.MyLayout, LogTest" > <param name="ConversionPattern" value="%property{au_ID}"/> </layout> </parameter> </appender> </log4net> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> </configuration>

MyLayout 是一个映射类

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

    public class MyMessagePatternConverter : PatternLayoutConverter {
        protected override void Convert(System.IO.TextWriter writer, log4net.Core.LoggingEvent loggingEvent) {
            if (Option != null) {
                // Write the value for the specified key  
                WriteObject(writer, loggingEvent.Repository, LookupProperty(Option, loggingEvent));
            }
            else {
                // Write all the key value pairs  
                WriteDictionary(writer, loggingEvent.Repository, loggingEvent.GetProperties());
            }
        }
        /// <summary>  
        /// 通过反射获取传入的日志对象的某个属性的值  
        /// </summary>  
        /// <param name="property"></param>  
        /// <returns></returns>  
        private object LookupProperty(string property, log4net.Core.LoggingEvent loggingEvent) {
            object propertyValue = string.Empty;
            PropertyInfo propertyInfo = loggingEvent.MessageObject.GetType().GetProperty(property);
            if (propertyInfo != null)
                propertyValue = propertyInfo.GetValue(loggingEvent.MessageObject, null);
            return propertyValue;
        }
    }

 

 控制台文

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LogTest {
    class Program {
        static void Main(string[] args) {
            log4net.Config.XmlConfigurator.Configure();

            log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
            log.Info(new ASM_Log { au_ID = 1, Log_Content = "11", Log_Type = "s", Log_Object = "3", Log_Url = "sss" });

            Console.ReadKey();
        }
    }
    public class ASM_Log {
        public int au_ID { set; get; }
        public string Log_Object { set; get; }
        public string Log_Type { set; get; }
        public string Log_Content { set; get; }

        public string Log_Url { set; get; }
    }
}

 

 

因为项目和别的项目相连,所以有需要的需要引用现有项目就可以

下载链接:http://pan.baidu.com/s/1jHJgLnS

 

log4net 写数据到sql数据库

标签:映射   layout   base   size   value   ext   cti   .sql   protected   

人气教程排行