(二)使用log4net写入数据库自定义日志

1、配置项目环境

1.1 本文只显示需要修改配置的操作,初次引入log4net环境的请参考上文

1.2 安装mysql-connector-net.msi环境,下载地址。并手动生成数据库日志信息表。

2、配置log4net.config

2.1 修改log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <!-- Mysql日志类 -->
    <logger name="logdb">
      <level value="ALL" />
      <appender-ref ref="AdoNetAppender_Mysql" />
    </logger>

    <!-- Mysql日志附加介质 -->
    <appender name="AdoNetAppender_Mysql" type="log4net.Appender.AdoNetAppender">
      <!-- 日志信息缓冲区大小,测试时为0,实际部署可适当改为100 -->
      <bufferSize value="0" />
      <!-- mysql-connector-net版本为6.8.3以上,不需更改数据源 -->
      <ConnectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
      <!-- 数据库连接字符串 -->
      <ConnectionString value="server=localhost;user id=root;password=root;persist security info=True;character set=utf8;database=test;pooling=true;"/>
      <!-- 数据库日志插入命令 -->
      <commandText value="INSERT INTO loginfo (DateTime,Message,UserId) VALUES (@log_date, @message, @user_id)" />
      <parameter>
        <parameterName value="@log_date" />
        <dbType value="DateTime" />
        <layout type="log4net.Layout.RawTimeStampLayout" />
      </parameter>
      <parameter>
        <parameterName value="@message" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message" />
        </layout>
      </parameter>
      <!-- 格式带property为自定义信息 -->
      <parameter>
        <parameterName value="@user_id" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{UserId}" />
        </layout>
      </parameter>
    </appender>
  </log4net>
</configuration>

3、代码使用示例

3.1 修改工具类LogHelper

namespace July.Demo.Win
{
    public class LogHelper
    {
        static readonly log4net.ILog logdb = log4net.LogManager.GetLogger("logdb");

        public static void WriteLog(string info)
        {
            if (logdb.IsInfoEnabled)
            {
          //使用线程相关属性设定自定义信息
                log4net.ThreadContext.Properties["UserId"] = "U-1001";
                logdb.Info(info);
            }
        }
    }
}

4、运行效果

4.1 效果图如下

时间: 2024-08-03 09:12:10

(二)使用log4net写入数据库自定义日志的相关文章

【.NET】Log4net将操作日志写入数据库

配置文件可以参考上篇博文[.NET]log4net配置文件解析. 先在Global.aspx中添加这样一句代码,来读取配置文件,初始化log4net的环境. public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { log4net.Config.XmlConfigurator.Configure(); } 新建一个Log文件夹,

asp.net利用log4net写入日志到SqlServer数据库

asp.net利用log4net写入日志到SqlServer数据库 作者: Kein  来源: 博客园  发布时间: 2010-10-14 07:19  阅读: 6427 次  推荐: 6   原文链接   [收藏] 摘要:Log4net是一个开源的错误日志记录项目,asp.net利用log4net写入日志到SqlServer数据库.下面就我的安装部署log4net到MS sql server的经验与大家分享. asp.net利用log4net写入日志到SqlServer数据库,Log4net是

Log4Net写入到数据库配置过程中的一些小问题备忘

问题1: 在公司进行log4net写入服务器配置的时候,一切正常,但是在家里的机器上,就频繁出现这个问题: SQL Server 2008 报错:已成功与服务器建立连接,但是在登录前的握手期间发生错误 并且这种错误是随机性的,在log4net往数据库插入几条的时候,没问题,但是插入次数一多起来,就频繁报这个错误.后来没办法,网上搜罗了一圈,最终发现了解决方案: 将相关的TCP参数都设置为启动之后,就再没遇到过问题. 问题2,log4net配置都正确,但是一直无法写入数据库. 这个问题困扰了好久,

如何借助log4j把日志写入数据库中

log4j是一个优秀的开源日志记录项目,我们不仅可以对输出的日志的格式自定义,还可以自己定义日志输出的目的地,比如:屏幕,文本文件,数据 库,甚至能通过socket输出.本节使用MySQL数据库主要讲述如何将日志信息输入到数据库中. 用log4j将日志写入数据库主要用到是log4j包下的JDBCAppender类,它提供了将日志信息异步写入数据的功能,我们可以直接使用这个类将我 们的日志信息写入数据库:也可以扩展JDBCAppender类,就是将JDBCAppender类作为基类进行二次开发获得

使用log4net写自定义日志

在使用log4net写Web服务器端日志的时候,通常需要一些自定义的参数,比如请求的url,method,以及用户名等等,而log4net中默认的Log接口只提供了很少的参数.    在网上找的其他的解决方案,都是要重写很多地方,而且经常都是不全,让人很难理解,我反正是看不懂...    对俺们这些整天玩黑科技的人来说,自然要用一些不那么正常的方式来解决问题. 在这里,黑科技的意思是指绕过API或者直接修改API,其中带有一定的危险性的代码. 简单研究了一下log4net的源码(使用ILSpy反

使用log4j让日志写入数据库

之前做的一个项目有这么个要求,在日志管理系统里,需要将某些日志信息存储到数据库里,供用户.管理员查看分析.因此我就花了点时间搞了一下这一功能,各位请看. 摘要:我们知道log4j能提供强大的可配置的记日志功能,有写文件的.打印到控制台的等等,但有时我们需要它把日志输出到后台数据库中,log4j的强大的可扩展性支持了这一点,以下就是具体的实现. 关键词:log,log4j,日志,Java,DB,数据库,slf4j 前提:已经配置好slf4j.log4j,能正常的往文件或控制台写日志. 需求:将日志

NLog 自定义日志内容,写日志到数据库;修改Nlog.config不起作用的原因

NLog的安装请百度,我安装的是3.2.NLog可以向文件,数据库,邮件等写日志,想了解请百度,这里讲怎么写入数据库,及常常会遇到的问题: 1.layout render NLog内置了很多日志内容格式,样子就是${longdate}之类的,详见:https://github.com/NLog/NLog/wiki/Layout-Renderers 2.如果我们要自定义日志: <target xsi:type="Database" name="LogOnlog"

将日志写入数据库

之前做的一个项目有这么个要求,在日志管理系统里,需要将某些日志信息存储到数据库里,供用户.管理员查看分析.因此我就花了点时间搞了一下这一功能,各位请看. 摘要:我们知道log4j能提供强大的可配置的记日志功能,有写文件的.打印到控制台的等等,但有时我们需要它把日志输出到后台数据库中,log4j的强大的可扩展性支持了这一点,以下就是具体的实现. 关键词:log,log4j,日志,Java,DB,数据库,slf4j 前提:已经配置好slf4j.log4j,能正常的往文件或控制台写日志. 需求:将日志

转:使用log4net完成程序异常日志记录(使用SQLite数据库记录和普通文本记录)

http://www.cnblogs.com/kyo-yo/archive/2010/06/11/use-log4net-to-log-exception.html 在前端时间开发的时候由于需要将异常保存到数据库中,所以就到网上搜了下专门的日志记录工具,一搜果然很多,比如:log4net,NLog,EntLib Logging等等,但是还是log4net名气最大,所以就下载下来试用了一番,果然很方便,其涵盖了所有常用的日志记录方式具体的可以看下表: AdoNetAppender 将日志记录到数据