log4net记录日志到数据库自定义字段

时间:2022-09-23 22:19:57

假设数据库中有如下自定义字段:

log4net记录日志到数据库自定义字段
 log4net记录日志到数据库自定义字段log4net记录日志到数据库自定义字段

1、根据自定义字段定义日志信息对象

    public class MessageLog
    {
 
        /// <summary>
        /// 短信发送是否成功
        /// </summary>
        public int Success { get; set; }
 
        /// <summary>
        /// 发送号码(可以多个,逗号分隔)
        /// </summary>
        public string Mobiles { get; set; }
 
        public string Message { get; set; }
 
        /// <summary>
        /// 发送内容
        /// </summary>
        public string Content { get; set; }
 
        public override string ToString()
        {
            return this.Message;
        }
    }
 
2、根据自定义字段定义PatternConverter,以Content自定义字段为例,其它两个字段同
    internal sealed class ContentPatternConverter : PatternLayoutConverter
    {
        protected override void Convert(System.IO.TextWriter writer, LoggingEvent loggingEvent)
        {
            var messageLog = loggingEvent.MessageObject as MessageLog;
            if (messageLog != null)
            {
                writer.Write(messageLog.Content);
            }
        }
    }
 
3、自定义PatternLayout
    public class MessageLayout : PatternLayout
    {
        public MessageLayout()
        {
            this.AddConverter("Success", typeof(SuccessPatternConverter));
            this.AddConverter("Mobiles", typeof(MobilesPatternConverter));
            this.AddConverter("Content", typeof(ContentPatternConverter));
        }
    }
 
4、日志配置文件中添加数据库记录器并引用
<appender name="MySqlAdoNetAppender" type="log4net.Appender.AdoNetAppender">
    <bufferSize value="1" />
    <param name="ConnectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" />
    <param name="ConnectionString" value="Data Source=192.168.2.239;port=3306;Initial Catalog=log;user id=hhuser;password=123456;" />
    <commandText value="INSERT INTO log4message(datetime,thread,level,logger,message,Exception,Success,Mobiles,Content) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception, @Success, @Mobiles, @Content)" />
    <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>
    <parameter>
      <parameterName value="@Success" />
      <dbType value="Int32" />
      <layout type="BKMS.Service.Log.MessageLayout, BKMS.Service">
        <conversionPattern value="%Success" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@Mobiles" />
      <dbType value="String" />
      <size value="4000" />
      <layout type="BKMS.Service.Log.MessageLayout, BKMS.Service">
        <conversionPattern value="%Mobiles" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@Content" />
      <dbType value="String" />
      <layout type="BKMS.Service.Log.MessageLayout, BKMS.Service">
        <conversionPattern value="%Content" />
      </layout>
    </parameter>
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="INFO" />
      <levelMax value="INFO" />
    </filter>
  </appender>

log4net记录日志到数据库自定义字段的更多相关文章

  1. 将WebService部署到 SharePoint 2010 gac 缓存中,并用Log4Net记录日志到数据库

    最近做了一个sharePoint项目,需要实现的功能是,第三方网站访问我们sharePoint中的数据,通过Webservice方式实现文件的上传和下载. 于是代码工作完成了之后,本地调试没什么问题, ...

  2. 使用log4net记录日志到数据库(含有自定义属性)

    记录日志是管理系统中对用户行为的一种监控与审核,asp.net中记录日志的方式有很多种,这里我只介绍一下最近用到的log4net,关于他的具体介绍网上有很多,我讲一下他的用法. 第一步:在配置文件中的 ...

  3. Log4Net使用指南之用log4net记录日志到数据库(含有自定义属性)------附Demo例子源代码

    Log4NET简介 log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具. 前提 最近做项目 ...

  4. 使用log4net记录日志到数据库(含自定义属性)

    日志输出自定义属性! 特来总结一下: 一.配置文件 使用log4写入数据库就不多说了,网上方法很多,自定义字段如下 <commandText value="INSERT INTO db ...

  5. log4j配置输出到数据库&plus;自定义字段

    Log4j.properties配置 log4j.rootLogger = info,stdout,D,E,A3 log4j.appender.Threshold=info ### 控制台输出### ...

  6. asp&period;net mvc中用 log4net记录日志到数据库中

    1.log4net官网配置相关,创建数据库 http://logging.apache.org/log4net/release/config-examples.html CREATE TABLE [d ...

  7. log4net自定义字段写入SqlServer数据库 ASP&period;net

    首先申明,本示例经过本作者亲自试验通过,可以运行 第一步 编写log4net配置文件 此处为Log.xml,该文件放在与Web.config平级的位置 <?xml version="1 ...

  8. Log4net 自定义字段到数据库(二)

    这种方法比第一种方法麻烦些 Log4Net.config <?xml version="1.0" encoding="utf-8" ?> <c ...

  9. Log4net 自定义字段到数据库

    今天要求做个log4net自定义字段到数据库,在网上找了好多例子,都运行不成功.最后找了个国外的,很简单的就解决了. log4net它已经定义的字段有 <commandText value=&q ...

随机推荐

  1. maya的卡通渲染

    为了统一工作流,给maya也做了个卡通shader:

  2. (实用篇)php 文件夹删除,清除缓存程序

    <?php header('content-type:text/html;charset=utf-8'); function delFile($fpath) { $filesize = arra ...

  3. &lbrack;改善Java代码&rsqb;枚举项的数量限制在64个以内

    为了更好的使用枚举,Java提供了两个枚举集合:EnumSet和EnumMap,这两个集合的使用方法都比较简单,EnumSet表示其元素必须是某一枚举的枚举项,EnumMap表示Key值必须是某一枚举 ...

  4. Shell&colon; extract more from listener&period;log&lpar;分析监听日志&rpar;

    最近遇到了两起数据库连接数不足的问题, 通常都会预留一些会话增加的情况, 但在一些特殊情况下如连接风暴(logon storm), 如果在监听中没有做rate限流,对数据库来说巨大的冲击可能会导致数据 ...

  5. RichTextBox 右键显示 ContextMenuTrip 分类: C&num; 2014-10-16 10&colon;43 337人阅读 评论&lpar;0&rpar; 收藏

    说明: (1)命名: RichTextBox  -> rtxt1 ContextMenuTrip -> cms1 (2)截图: (3)完整代码: <span style=" ...

  6. Tomcat JVM

    https://www.mulesoft.com/tcat/tomcat-jvm https://www.mulesoft.com/tcat/tomcat-catalina https://www.m ...

  7. awk 中的难懂符号解释

    awk中NF和NR的意义,其实你已经知道NF和NR的意义了,NF代表的是一个文本文件中一行(一条记录)中的字段个数,NR代表的是这个文本文件的行数(记录数). 看个例子: cal 9 2003 Sep ...

  8. mysql存储过程详解 mysql存储过程和函数

    第20章:存储程序和函数 目录 20.1. 存储程序和授权表 20.2. 存储程序的语法 20.2.1. CREATE PROCEDURE和CREATE FUNCTION 20.2.2. ALTER ...

  9. 【Spring】20、使用TransactionSynchronizationManager在spring事务提交之后进行一些操作。

    本文内容 如何在spring事务提交之后进行一些操作,这些操作必须得在该事务成功提交后才执行,回滚则不执行. 要点 如何在spring事务提交之后操作 如何在spring事务回滚之后操作 实现方案 使 ...

  10. OpenSCAD 大白

    $fn=10; module bag_bar(rr1,rr2,d) { rotate_extrude() difference() { hull() //hull() fast in 2D, no g ...