参考郑大哥的这篇文章,http://www.cnblogs.com/zhengyun_ustc/archive/2005/07/19/196049.html
不过,我在我这个项目中,具体使用的方法有点不同。
这个学生处学生信息管理系统,业务日志比较简单,其实并不需要使用log4net。所以在这个项目中,只用log4net来记录错误日志。

1.建立配置文件。以下配置,是把信息记录到数据库和一个以当前日期为名字的日志txt文件。从数据库的insert语句就可以看出数据库的

Code
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    </configSections>
  <log4net>
    <appender name="ADONetAppender" type="log4net.Appender.AdoNetAppender">
      <bufferSize value="1" />
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <connectionString value="server=codebase;database=StuDepartmentOA;uid=sadis;pwd=123;timeout=300;" />
      <commandText value="INSERT INTO ErrLog ([Time],[errLevel],[Info],[Exception]) VALUES (@time, @level, @info, @exception)" />
      <parameter>
        <parameterName value="@time" />
        <dbType value="DateTime" />
        <layout type="log4net.Layout.RawTimeStampLayout" />
      </parameter>
      <parameter>
        <parameterName value="@level" />
        <dbType value="String" />
        <size value="8" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%p" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@info" />
        <dbType value="String" />
        <size value="200" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%m" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@exception" />
        <dbType value="String" />
        <size value="1000" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%exception" />
        </layout>
      </parameter>
    </appender>
    <appender name="FileErrLogAppender" type="log4net.Appender.RollingFileAppender">
      <!--日志文件的存储路径-->
      <file value="bin\Log\"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyy-MM-dd.LOG"/>
      <!--根据日期,定义文件名-->
      <staticLogFileName value="false"/>
      <!--日志文件输出格式-->
      <layout  type="log4net.Layout.PatternLayout">
        <param name="Header" value="[Header]"/>
        <param name="Footer" value="[Footer]"/>
        <ConversionPattern value="%nTime: %d %n Level: %level   Info: %message %nException: %exception"/>
      </layout>
    </appender>

<!-- Setup the root category, add the appenders and set the default level -->
    <root>
      <level value="WARN"/>
      <level value="INFO"/>
      <level value="DEBUG"/>
    </root>
    <!-- Specify the level for some specific categories -->
    <logger name="logger">
      <level value="WARN"/>
      <level value="INFO"/>
      <level value="DEBUG"/>
      <appender-ref ref="FileErrLogAppender"/>  
      <appender-ref ref="ADONetAppender" />
    </logger>

</log4net>
</configuration>

对应的数据库表:

Code
USE [StuDepartmentOA]
GO
/****** 对象:  Table [dbo].[ErrLog]    脚本日期: 08/16/2009 10:09:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[ErrLog](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [time] [datetime] NOT NULL,
    [errLevel] [varchar](8) COLLATE Chinese_PRC_CI_AS NOT NULL,
    [info] [nvarchar](200) COLLATE Chinese_PRC_CI_AS NOT NULL,
    [exception] [varchar](1000) COLLATE Chinese_PRC_CI_AS NULL,
 CONSTRAINT [PK_errLog] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

2.把配置文件放到Web目录下,跟web.config同一层。

3.建立globe.asax文件,在Application_Start中加入

log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("~") + @"\log4net.config"));

4.再加入相应的引用。然后如果项目中有其他类库,那么再在对应用到的类库中加入引用。
(!!这里需要注意的是,如果用了NHibernate,就需要注意了,必须加入对应版本的log4net,不然会出错。我本来加了一个1.2.9的log4net,但NHibernate默认用附带的1.2.10,运行时就报错了)

5.实际使用:

Code
using System;
using log4net;
namespace DAL
{
    /// <summary>
    /// LogHelper 的摘要说明
    /// </summary>
    public class LogHelper
    {
        private static ILog Logger = log4net.LogManager.GetLogger("logger");
        public static void Debug(string message, Exception ex)
        {
            if(Logger.IsDebugEnabled)
            {
                Logger.Debug(message, ex);
            }
        }
        public static void Debug(string message)
        {
            if (Logger.IsDebugEnabled)
            {
                Logger.Debug(message);
            }
        }
        public static void Info(string message, Exception ex)
        {
            if(Logger.IsInfoEnabled)
            {
                Logger.Info(message, ex);
            }
        }
        public static void Info(string message)
        {
            if (Logger.IsInfoEnabled)
            {
                Logger.Info(message);
            }
        }
        public static void Error(string message, Exception ex)
        {
            if (Logger.IsErrorEnabled)
            {
                Logger.Error(message,ex);
            }
        }
        public static void Error(string message)
        {
            if (Logger.IsErrorEnabled)
            {
                Logger.Error(message);
            }
        }
    }
}

转载于:https://www.cnblogs.com/kenkofox/archive/2009/08/12/1544501.html

Log4Net ,.net和SQL Server的完美结合相关推荐

  1. 分享制作精良的知识管理系统 配置SQL Server文档数据库 完美实现博客文章的的下载,存储和浏览...

    前一篇文章<分享制作精良的知识管理系统 博客备份程序 Site Rebuild>已经提到如何使用Site Rebuild来下载您所喜欢的博客文章,但是还不能实现把下载的文件导入进数据库中, ...

  2. SQL Server相关知识

    SQL Server 中科永联高级技术培训中心(www.itisedu.com) SQL Server是微软公司开发的一个关系数据库管理系统,以Transact_SQL作为它的数据库查询和编程语言.T ...

  3. 你还在为无法完美卸载SQL Server 2008 R2而烦恼吗?

    小编最近遇到了一件烦心事,在安装SQL Server 2008 R2时由于某些原因总是出现权限不足而导致无法完成安装的错误,为此小编很苦恼,在这里提前说明一下,小编电脑是Win10系统.下面让我们进入 ...

  4. 完美卸载SQL Server 2008 R2 的方法,适合所有问题

    最近遇到了一件烦心事,在安装SQL Server 2008 R2总是在Analysis Services选项那里出现错误,安装了一整天也没好,真的是按了又卸载,之后在按,为此我很苦恼,经过百度查询,终 ...

  5. SQL Server 2014 的完美卸载

    完美卸载SQL Server2014 1.在运行中输入services.msc,然后找到所有跟Sql Server有关的服务,并且停止这些服务. 凡带有Microsoft SQL Server字样的都 ...

  6. C# log4net将日志写入sql server,winform项目

    一.背景 自己开发的小项目中,想要使用log4net来记录日志,项目使用的winform框架开发的,开发工具是visual studio 2017,数据库使用的是sql server 2008 R2, ...

  7. 【数据库】完美卸载sql server 2008 r2

    一.卸载SQL Server 2008 (R2) 1.找到控制面板,win8及win7都可以直接点解"开始"按钮找到. (Tip:win10系统的小盆友可以在"开始&qu ...

  8. Microsoft JET Engine的完美替代: SQL Server Compact Version 3.5和完美的Synchronizer库

    喜欢自己写程序的人都知道,Microsoft JET Engine是一个非常好用的In-Process的基于文件(即Access的数据文件,后缀名为MDB)的数据库引擎,好些小网站也使用MDB文件作为 ...

  9. 如何使用 DBCC MEMORYSTATUS 命令来监视 SQL Server 2005 中的内存使用情况

    https://technet.microsoft.com/en-us/solutionaccelerators/dd537566.aspx 注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完 ...

最新文章

  1. 黄金矿工-收益最大化
  2. 用php对文件的操作
  3. CentOS安装mariadb
  4. Python用两个骰子玩掷骰子的游戏。本金为10元,当掷出“7”即获得奖金4元,否则扣除1元。编程测算玩到多少手时钱全部输完,及哪一手时钱数最多。
  5. OpenGL ES之深入解析如何实现“手写绘画板”
  6. 前端加按钮将图片另存为_Windows 10系统如何将自己的照片制作成文件夹图标
  7. php 函数封装上传,PHP(多)文件上传实现和函数封装
  8. 《深入理解分布式事务》第五章 强一致性分布式解决方案
  9. php 读取注册表 不用wscript.shell,WebShell的检测技术_91Ri.org
  10. 蚂蚁集团,打响2022反内卷第一枪?
  11. excel常用公式--数据清洗类
  12. 软考程序员java_软考程序员难吗?
  13. 基于多智能体强化学习的自动化集装箱码头无冲突AGV路径规划
  14. 【深度学习】搭建类似LeNet-5网络识别Fashion-MNIST数据集(衣服,鞋子等)
  15. 基于RouteOS的NAT Radius网络计费管理实验
  16. 视频帧凸包检测 结果存入数据库
  17. JS控制DIV的显示隐藏
  18. Python-flask 使用Markdown和Flask-PageDown支持富文本文章
  19. SpringBoot 整合 Sharding-JDBC
  20. 体系 英文缩写是(D)

热门文章

  1. Request processing failed; nested exception is feign.RetryableException: Read timed out
  2. 多选框位置调整_URPC 2019 水下目标检测竞赛冠军方案:多图像融合增强
  3. html 中写样式,在html文档中如何定义内部样式表
  4. while用法_语法||由一句译文聊聊while的用法
  5. python找色_python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
  6. dlna和miracast可以共存吗_AirPlay、DLNA、Miracast三大无线技术介绍
  7. php 数组合并_PHP数组常用函数分类整理
  8. 孩子有必要学python吗_不学就落后了?孩子都能学得Python编程,究竟是什么?
  9. 计算机网络-基本概念(11)【应用层】
  10. 三十七、数据泛化(面向属性的归纳)