当前位置:编程学习 > C#/ASP.NET >>

log4net 写不进数据库

问题:log4net 写不进SQL数据库


配置文件如下:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net debug="false">
<root>
<level value="ALL"/>
<appender-ref ref="ADONetAppender"/>
</root>
<logger name="AA">
<level value="ALL"/>
<appender-ref ref="ADONetAppender"/>
</logger>
<appender name="ADONetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="2"/>
<connectionType value="System.Data.SqlClient.SqlConnection,System.Data, Version=1.0.3300.0, Culture=neutral,PublicKeyToken=b77a5c561934e089"/>
<connectionString value="database=xxx;server=xxx;UserID=xxx;Password=xxx"/>
<commandText value="INSERT INTO LOG([DATE],[THREAD],[LEVEL],[LOGGER],[MESSAGE],[EXCEPTION]) VALUES(@log_date, @thread, @log_level, @logger, @message, @exception)"/>
<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>
</appender>
</log4net>

不知道为什么一直都写不进数据库,望大家指点一下,谢谢!!! --------------------编程问答-------------------- 对这个东西不懂。不过我这边有个log4net.webconfig的代码。
我把代码考出来,能帮上就最好。
<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="false">
  <!--
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
      <file value="Data/mojoportal-log.config" />
      <appendToFile value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{url}] - %message%newline" />
      </layout>
    </appender>
    <appender name="HttpTraceAppender" type="log4net.Appender.AspNetTraceAppender" >
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{url}] - %message%newline" />
      </layout>
    </appender>
    -->
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Data/currentlog.config" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <appendToFile value="true" />
    <encoding value="utf-8" />
    <maxSizeRollBackups value="3" />
    <maximumFileSize value="800KB" />
    <rollingStyle value="Size" />
    <staticLogFileName value="true" />
    <!--
      <layout type="log4net.Layout.SimpleLayout" />
      -->
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %level %logger - %message %newline" />
    </layout>


  </appender>
  <root>
    <level value="INFO" />
    <!--
ALL 
DEBUG 
INFO
WARN
ERROR
FATAL
OFF

-->

    <appender-ref ref="RollingLogFileAppender" />

    <!-- 
      <appender-ref ref="HttpTraceAppender" />
<appender-ref ref="RollingLogFileAppender" /> 
<appender-ref ref="LogFileAppender" />
-->
  </root>

  <!--

[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 
) ON [PRIMARY]

<appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
  <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <connectionString value="data source=SQLSVR;initial catalog=test_log4net;integrated security=false;persist security info=True;User ID=sa;Password=sa" />
  <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" />
  <parameter>
    <parameterName value="@log_date" />
    <dbType value="DateTime" />
    <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}" />
  </parameter>
  <parameter>
    <parameterName value="@thread" />
    <dbType value="String" />
    <size value="255" />
    <layout type="log4net.Layout.PatternLayout" value="%thread" />
  </parameter>
  <parameter>
    <parameterName value="@log_level" />
    <dbType value="String" />
    <size value="50" />
    <layout type="log4net.Layout.PatternLayout" value="%level" />
  </parameter>
  <parameter>
    <parameterName value="@logger" />
    <dbType value="String" />
    <size value="255" />
    <layout type="log4net.Layout.PatternLayout" value="%logger" />
  </parameter>
  <parameter>
    <parameterName value="@message" />
    <dbType value="String" />
    <size value="4000" />
    <layout type="log4net.Layout.PatternLayout" value="%message" />
  </parameter>
</appender>



-->


  <!-- 
  http://logging.apache.org/log4net/release/config-examples.html
  
  Documentation for smtp appender:
  http://logging.apache.org/log4net/release/sdk/log4net.Appender.SmtpAppender.html
  
  The following example shows how to configure the SmtpAppender  to deliver log events via SMTP email. 
  The To, From, Subject and SmtpHost are required parameters. This example shows how to deliver only significant events. 
  A LevelEvaluator  is specified with a threshold of WARN. This means that an email will be sent for each WARN or higher 
  level message that is logged. Each email will also contain up to 512 (BufferSize) previous messages of any level to provide 
  context. Messages not sent will be discarded.
  -->
  <!-- 
  <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
    <to value="to@domain.com" />
    <from value="from@domain.com" />
    <subject value="test logging message" />
    <Username value="" />
    <Password value="" />
    <smtpHost value="SMTPServer.domain.com" />
    <Port value="" />
    <bufferSize value="512" />
    <lossy value="true" />
    <evaluator type="log4net.Core.LevelEvaluator">
        <threshold value="WARN"/>
    </evaluator>
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />
    </layout>
</appender>
  
  -->

  <!-- 
  This example shows how to configure the SmtpAppender  to deliver all messages in emails 
  with 512 (BufferSize) messages per email.
  -->
  <!-- 
  <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
    <to value="to@domain.com" />
    <from value="from@domain.com" />
    <subject value="test logging message" />
    <smtpHost value="SMTPServer.domain.com" />
    <bufferSize value="512" />
    <lossy value="false" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />
    </layout>
</appender>
  
  -->

  <!-- 
  This example shows a more verbose formatting layout for the mail messages.
  -->
  <!--
  <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender,log4net">
    <to value="to@domain.com" />
    <from value="from@domain.com" />
    <subject value="test logging message" />
    <smtpHost value="SMTPServer.domain.com" />
    <bufferSize value="512" />
    <lossy value="false" />
    <evaluator type="log4net.Core.LevelEvaluator,log4net">
        <threshold value="WARN" />
    </evaluator>
    <layout type="log4net.Layout.PatternLayout,log4net">
        <conversionPattern value="%property{log4net:HostName} :: %level :: %message %newlineLogger: %logger%newlineThread: %thread%newlineDate: %date%newlineNDC: %property{NDC}%newline%newline" />
    </layout>
</appender>
  
  -->


</log4net>
--------------------编程问答-------------------- 如果真是config配置有问题的话,使用如下

<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
    </configSections>
    <log4net>

        <logger name="LogSystem">
            <level value="ALL"/>
            <appender-ref ref="AdoNetAppender_SqlServer" />
        </logger>
        
        <!--记录到sqlserver数据库方式-->
        <appender name="AdoNetAppender_SqlServer" 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="data source=xxx;initial catalog=xxx;integrated security=false;persist security info=True;User ID=xxx;Password=xxx"/>
            <commandText value="INSERT INTO SysLog ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)"/>
            <parameter>
                <parameterName value="@log_date"/>
                <dbType value="DateTime"/>
                <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}"/>
            </parameter>
            <parameter>
                <parameterName value="@thread"/>
                <dbType value="String"/>
                <size value="255"/>
                <layout type="log4net.Layout.PatternLayout" value="%thread"/>
            </parameter>
            <parameter>
                <parameterName value="@log_level"/>
                <dbType value="String"/>
                <size value="50"/>
                <layout type="log4net.Layout.PatternLayout" value="%level"/>
            </parameter>
            <parameter>
                <parameterName value="@logger"/>
                <dbType value="String"/>
                <size value="255"/>
                <layout type="log4net.Layout.PatternLayout" value="%logger"/>
            </parameter>
            <parameter>
                <parameterName value="@message"/>
                <dbType value="String"/>
                <size value="4000"/>
                <layout type="log4net.Layout.PatternLayout" value="%message"/>
            </parameter>
        </appender>
    </log4net>
</configuration>
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,