需求:基于log4net组建,创建Console程序将日志输出到Access数据库。

具体实施:

(1)创建控制台程序。

(2)控制台程序中,添加一个纯文本文件,文件命名为“log-Access.set”

          log-Assess.set文件的内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<log4net xmlns="urn:log4net">
  <root xmlns="">
    <level value="ALL" />
    <appender-ref ref="AdoNetAppender_Access" />
  </root>
  <appender  xmlns="" name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender">
    <connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\my\Desktop\02\log4net\bin\log\log4net.mdb " />
    <commandText value="INSERT INTO LogDetails([LogDate],[Thread],[logLevel],[Logger],[Message]) VALUES(@logDate, @thread, @logLevel,@logger,@message)" />

     <!--BufferSize为缓冲区大小,只有日志记录超10条才会一块写入到数据库--> 

    <bufferSize value="10"/>
    <!--定义各个参数-->
    <parameter>
      <parameterName value="@logDate" />
      <dbType value="String" />
      <size value="240" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@thread"/>
      <dbType value="String" />
      <size value="240" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%thread" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@logLevel" />
      <dbType value="String" />
      <size value="240" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%level" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@logger" />
      <dbType value="String" />
      <size value="240" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%logger" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@message" />
      <dbType value="String" />
      <size value="240" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%message" />
      </layout>
    </parameter>
  </appender>
</log4net>

注意:(1)文件属性设置为:如果较新则复制

        (2)connectionString设置里面的文件路径。绝对路径

(3)在AssemblyInfo.cs文件里添加

       [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log-Access.set", Watch = true)]

 (4)在ConnectionString里面对应的路径中,创建log4net.mdb数据库,并创建表

CREATE TABLE [LogDetails] (
    ID   AutoIncrement,
    [logDate] longText,
    [Thread] longText,
    [logLevel] longText,
    [Logger] longText,
    [Message] longText,
    Primary   Key   (ID)

)    

(5)添加代码 

  static void Main(string[] args)
        {
         
            ILog log = log4net.LogManager.GetLogger(typeof(Program));
            Random random = new Random();
            for (int i = 0; i < 2; i++)
            {
                //记录错误日志
                if (log.IsErrorEnabled)
                    log.Debug("你引起了一个错误,错误ID为:" + random.Next().ToString());

                //记录严重错误 
                if (log.IsFatalEnabled)
                    log.Fatal("你引发了一个总结者错误,可能导致系统终止,ID为:" + random.Next().ToString());
                //记录一般信息
                if (log.IsInfoEnabled)
                    log.Info("你计划记录一个信息,id为:" + random.Next().ToString());
                //记录调试信息 
                if (log.IsDebugEnabled)
                    log.Debug("调试信息,调试ID为:" + random.Next().ToString());
                //记录警告信息
                if (log.IsWarnEnabled)
                {
                    log.Warn("警告:警告ID为:" + random.Next().ToString());
                }
            }
        }

 

注意:在64位的Windows7系统调试时,如果office是32位将你的应用程序将原有的AnyCPU更改为CPU x86.

        如果是64位,安装64位的Jet40驱动。可以到http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d 下载

      否则会报错:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。

  其它数据库,基本和Access类似,只是在连接字符串和,插入部分有所不同。 

示例程序

    

 

posted on 2012-05-04 20:27  蒙遥  阅读(1025)  评论(0编辑  收藏  举报