国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

log4net修改數據庫連接字符串和寫自定義信息

2019-11-17 03:02:24
字體:
來源:轉載
供稿:網友

log4net修改數據庫連接字符串和寫自定義信息

最近項目需要用log4net來寫日志,因為整個平臺式在sharepoint上,我們需要記錄具體是哪個子站點發生的日志,因此需要再原來的log表里面添加一個自定義信息列。由于平臺的安全性要求,我們需要對連接字符串加密。連接字符串的信息是在AdoNetAppender讀取的,所以我們要擴展該類。而自定義消息我們需要擴展PatternLayout類。其實有關log4net的介紹網上已經很多了,如log4net.dll使用

具體的代碼如下:

  #region Log helper    public class LogMessage    {        public string CustomMessage { get; set; }        public string Message { get; set; }        public override string ToString()        {            return Message;        }    }    internal class CustomMessageConverter : PatternLayoutConverter    {        PRotected override void Convert(TextWriter writer, log4net.Core.LoggingEvent loggingEvent)        {            var logMessage = loggingEvent.MessageObject as LogMessage;            if (logMessage != null)            {                writer.Write(logMessage.CustomMessage);            }        }    }    internal class CustomLayout : PatternLayout    {        public CustomLayout()        {            this.AddConverter("CustomMessage", typeof(CustomMessageConverter));        }    }    public class CustAdoNetAppender : AdoNetAppender    {        string _connectiongStr = string.Empty;        public new string ConnectionString        {            set            {                _connectiongStr = value;                base.ConnectionString = _connectiongStr;            }            get            {                return base.ConnectionString;            }        }    }    #endregion

配置代碼

<?xml version="1.0" encoding="utf-8" ?><configuration>  <configSections>    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>  </configSections>  <log4net>    <logger name="MyLogger">      <level value="ALL"></level>      <appender-ref ref="ADONetAppender"></appender-ref>    </logger>    <!--記錄日志到數據庫-->    <appender name="ADONetAppender" type="ConsoleApp.CustAdoNetAppender">      <bufferSize value="100" />      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />      <connectionString value="data source=.;initial catalog=test;integrated security=false;persist security info=True;User ID=sa;PassWord=xxx" />        <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[CustomMessage]) VALUES (@log_date, @thread, @log_level, @logger, @message,@customMessage)" />      <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="@customMessage" />        <dbType value="String" />        <size value="4000" />        <layout type="ConsoleApp.CustomLayout">          <conversionPattern value="%CustomMessage" />        </layout>      </parameter>    </appender>  </log4net></configuration>

SQL腳本如下:

     CREATE TABLE [dbo].[Log] (        [ID] [int] IDENTITY (1, 1) NOT NULL ,       [Date] [datetime] NOT NULL ,       [Thread] [varchar] (255) NOT NULL ,       [Level] [varchar] (20) NOT NULL ,       [Logger] [varchar] (255) NOT NULL ,       [Message] [varchar] (4000) NOT NULL ,       [CustomMessage] VARCHAR(max) NULL     ) ON [PRIMARY]

在AssemblyInfo.cs文件中添加一句

[assembly: log4net.Config.DOMConfigurator(ConfigFile = "Log4Net.xml", Watch = true)]

調用代碼:

ILog log = LogManager.GetLogger("MyLogger"); log.Info(new LogMessage { Message = "message", CustomMessage = "cust" });

運行結果:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 合山市| 子长县| 涞源县| 文化| 隆昌县| 元阳县| 磴口县| 越西县| 通化市| 独山县| 南乐县| 夹江县| 湖北省| 花垣县| 靖宇县| 客服| 奎屯市| 卢龙县| 赤水市| 大宁县| 思南县| 太保市| 应用必备| 江西省| 乐陵市| 新河县| 营口市| 望江县| 泗水县| 邻水| 德江县| 邹城市| 汉中市| 南宁市| 孟津县| 阿瓦提县| 比如县| 三原县| 金华市| 芦溪县| 通州市|