本帖最后由 mvpxy 于 2012-01-11 16:10:58 编辑

解决方案 »

  1.   

    log4net1.2.10 在asp.net 2.0当中的使用:写入文件或者数据库 
    本文示例代码下载:http://files.cnblogs.com/lxinxuan/Log4Net_Test.rar参考了 http://blog.csdn.net/woowindice/archive/2007/03/24/1540122.aspx 
    同时参考:http://www.cnblogs.com/dragonsuc/archive/2006/06/21/431888.aspx
    这个介绍更全面些。使用步骤:
    1。下载log4net1.2.10 ,下载地址http://cvs.apache.org/dist/incubator/log4net/1.2.10/incubating-log4net-1.2.10.zip
    2。添加log4net的引用到您的asp.net 2.0项目
    3。asp.net2.0好象默认没有Global.asax文件了,所以要自己加一个。点项目右键来添加。
    4。在Global.asax文件的Application_Start方法里增加代码:log4net.Config.XmlConfigurator.Configure();
    5。在web.config文件里,编辑Configuration->Configsections 增加如下区域:
    <section  name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    然后增加log4net区域如下:
      <log4net>
        <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
          <param name="File" value="c:\\Log4Net.log"/>
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
          </layout>
        </appender>
        <logger name="File">
          <level value="Debug" />
          <appender-ref ref="LogFileAppender" />
        </logger>
      </log4net>
    整个web.config文件例如:
    <?xml version="1.0"?>
    <!-- 
        注意: 除了手动编辑此文件以外,您还可以使用 
        Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
         “网站”->“Asp.Net 配置”选项。
        设置和注释的完整列表在 
        machine.config.comments 中,该文件通常位于 
        WindowsMicrosoft.NetFrameworkv2.xConfig 中
    -->
    <configuration>
      <configSections>
        <section  name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>  </configSections>
      
      <appSettings>
        <add key="mt_url" value="http://61.175.132.123/mt?iscorpsend=false&amp;spid=%spid%&amp;mobileid=%mobileid%&amp;content=%content%"/>
        <add key="net.bzbs.www.BssoftWebAPI" value="http://www.bzbs.net/bswebapi/BssoftWebAPI.asmx"/>
      </appSettings>
      <connectionStrings/>
      <system.web>
        <!-- 
                设置 compilation debug="true" 将调试符号插入
                已编译的页面中。但由于这会 
                影响性能,因此只在开发过程中将此值 
                设置为 true。
            -->
        <compilation debug="true"/>
        <!--
                通过 <authentication> 节可以配置 ASP.NET 使用的 
                安全身份验证模式,
                以标识传入的用户。 
            -->
        <authentication mode="Windows"/>
        <!--
                如果在执行请求的过程中出现未处理的错误,
                则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
                开发人员通过该节可以配置
                要显示的 html 错误页
                以代替错误堆栈跟踪。        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />             
                -->
        <customErrors mode="Off" />    </system.web>
      <log4net>    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
          <param name="File" value="c:\Log4Net.log"/>
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
          </layout>
        </appender>
        <logger name="File">
          <level value="Debug" />
          <appender-ref ref="LogFileAppender" />
        </logger>  </log4net>
    </configuration>
     配置完毕!下面就可以使用log4net了,就跟java里的log4j一样
    比如在Default.aspx.cs里添加代码:
    log4net.ILog logger = log4net.LogManager.GetLogger("File");
     logger.Info(“测试log4net”);=======================================
    如果是写入数据库,则需要先建立数据库:
     CREATE TABLE [dbo].[Log] (
           [Id] [int] IDENTITY (1, 1) NOT NULL,
            [Date] [datetime] NOT NULL,
           [Thread] [varchar] (255) NOT NULL,
          [Level] [varchar] (50) NOT NULL,
           [Logger] [varchar] (255) NOT NULL,
           [Message] [varchar] (4000) NOT NULL,
           [Exception] [varchar] (2000) NULL
    )
    并且需要如下配置:<!--以下是写入数据库-->
      <log4net debug="false">
        <root>
          <level value="ALL" />
          <appender-ref ref="ADONetAppender" />
        </root>
        <!--
         定义loger的名称和使用的appender
        -->
        <logger name="AA">
          <level value="ALL"/>
          <appender-ref ref="ADONetAppender" />
        </logger>
        <appender name="ADONetAppender" type="log4net.Appender.AdoNetAppender">
          <!--
          定义几条存入数据库 有2条时才写入数据库,没有两条叫缓存
          -->
          <bufferSize value="2" />
          <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
          <connectionString value="database=Log;server=(local);User ID=log;Password=log" />
          <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.ILog log = log4net.LogManager.GetLogger("AA");           //log.Logger.Namelog.Debug("这是我在使用Log4Net");
      

  2.   

    再详细描述一下我的问题:我在log4net.config里面配置了数据库连接以及数据库插入操作语句,(配置语句在一楼)而且我也把log4net的源码下载进来了,可以调试,我就想知道我是否打开了数据库连接,并执行了数据库操作,在log4net的源码里哪里可以调试到我可以生成日志文本,但就是不能讲数据插入到oracle中,所以想知道是否打开了数据库连接,并执行了插入操作,在源码里怎样调试,或者源码里是否已经封装好了方法只要在log4net里面配置好了连接及数据库插入语句,就能执行数据库操作?急啊
      

  3.   

    已经解决了,原来是在插入oracle时,带的参数是不能用“@”符号的,要用“:”符号。而且配置文件要稍微调整一下,2楼辛苦你复制了,但是还是没有解决我的问题。可惜不能给自己分