log4net到数据库的错误日志 [英] error log with log4net to database

查看:101
本文介绍了log4net到数据库的错误日志的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

HI,



我正在使用log4net.dll将我的日志详细信息存储到数据库中,但由于我所做的设置错误而无法存储数据。任何人都可以向我发送log4net.dll的配置设置以将数据存储到数据库。

  //  < span class =code-comment> web.xml  
< ?xml version = 1.0>

<! - -
有关如何配置ASP.NET应用程序的更多信息,请访问
http: // go.microsoft.com/fwlink/?LinkId=169433
- >

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

< log4net>
< root>
< level value = INFO />
<! - < appender-ref ref = FileAppender /> - >
< appender-ref ref = AdoNetAppender />
< / root >

< appender name = AdoNetAppender type = log4net.Appender.AdoNetAppender >
< bufferSize value = 100 />
< connectionType value = 系统。 Data.SqlClient.SqlConnection,System.Data,Version = 1.0.3300.0,Culture = neutral,PublicKeyToken = b77a5c561934e089 />
< connectionString value = 数据源= SQLSERVER05; initial catalog = vardb; integrated security = false; persist security info = True; User ID = sa; Password = sasa />
< commandText value = INSERT INTO记录([日期],[线程],[级别],[记录器],[消息],[异常])值(@log_date,@ thread,@ log_level,@ logger,@ message,@ exception) />
< parameter>
< parameterName value = @ log_date />
< dbType value = DateTime />
< layout type = log4net.Layout.RawTimeStampLayout />
< / 参数 >
< parameter>
< parameterName value = @ thread />
< dbType value = String />
< size value = 255 />
< layout type = log4net.Layout.PatternLayout >
< conversionPattern value = %thread />
< / 布局 >
< / 参数 >
< parameter>
< parameterName value = @ log_level />
< dbType value = String />
< size value = 50 />
< layout type = log4net.Layout.PatternLayout >
< conversionPattern value = %level />
< / 布局 >
< / 参数 >
< parameter>
< parameterName value = @ logger />
< dbType value = String />
< size value = 255 />
< layout type = log4net.Layout.PatternLayout >
< conversionPattern value = %logger />
< / 布局 >
< / 参数 >
< parameter>
< parameterName value = @ message />
< dbType value = String />
< size value = 4000 />
< layout type = log4net.Layout.PatternLayout >
< conversionPattern value = %message />
< / 布局 >
< / 参数 >
< parameter>
< parameterName value = @ exception />
< dbType value = String />
< size value = 2000 />
< layout type = log4net.Layout.ExceptionLayout />
< / 参数 >
< / appender >


< / log4net >
< connectionStrings>
< add name = Constr connectionString = data source = DELL-XP1 \ SQLSERVER05; initial catalog = vardb; integrated security = false; persist security info = True; User ID = sa; Password =赤竹 />

< / connectionStrings >

< system.web>
< compilation debug = true targetFramework = 4.0 />


< authentication mode = Forms >
< forms loginUrl = 〜/ Account / Login.aspx timeout = 2880 />
< / 身份验证 >

< membership>
< providers>
< clear />
< add name = AspNetSqlMembershipProvider type = System.Web.Security.SqlMembershipProvider connectionStringName = ApplicationServices
enablePasswordRetrieval = false enablePasswordReset = true requiresQuestionAndAnswer = < span class =code-string> false
requiresUniqueEmail = false
maxInvalidPasswordAttempts = 5 minRequiredPasswordLength = 6 minRequiredNonalphanumericCharacters =
0 passwordAttemptWindow = 10
applicationName = / />
< / 提供商 >
< / 成员资格 >

< profile>
< providers>
< clear />
< add name = AspNetSqlProfileProvider type = System.Web.Profile.SqlProfileProvider connectionStringName = ApplicationServices applicationName = / />
< / 提供商 >
< / 个人资料 >

< roleManager enabled = false >
< providers>
< clear />
< add name = AspNetSqlRoleProvider type = System.Web.Security.SqlRoleProvider connectionStringName = ApplicationServices applicationName = / />
< add name = AspNetWindowsTokenRoleProvider type = System.Web.Security.WindowsTokenRoleProvider applicationName = / />
< / 提供商 >
< / roleManager >
< machineKey validationKey = 1619AB2FDEE6B943AD5D31DD68B7EBDAB32682A5891481D9403A6A55C4F91A340131CB4F4AD26A686DF5911A6C05CAC89307663656B62BE304EA66605156E9B5 decryptionKey = C9D165260E6A697B2993D45E05BD64386445DE01031B790A60F229F6A2656ECF validation = SHA1 decryption = AES />


< / system.web >

< system.webServer>
< modules runAllManagedModulesForAllRequests = true />
< / system.webServer >
< / 配置 >





//Global.asax



void Application_Start(object sender,EventArgs e)

{

//在应用程序启动时运行的代码

log4net.Config.DOMConfigurator.Configure( );

}



 // assembly.info 

[assembly :log4net.Config.XmlConfigurator(Watch = true)]



 // myweb.aspx.cs 

private static readonly log4net.ILog log = log4net.LogManager.GetLogger
(System.Reflection.MethodBase.GetCurrentMethod()。DeclaringType);
protected void Page_Load(object sender,EventArgs e)
{
log.Info(Info logging);
log.Debug(调试日志记录);
log.Error(错误记录);
log.Fatal(致命记录);

}

//并添加了dll引用(log4net.dll)

解决方案

< blockquote>如果你在我的文章中读到( log4net教程 [ ^ ])你会看到如果要登录SQL,你必须检查你的缓冲区尺寸。如果将其保留为默认值100,则log4net将等待,直到队列中有100条消息才会将它们写入SQL。如果将该缓冲区更改为1,它将立即像您期望的那样写入日志消息。


参考 log4net教程 [ ^ ]



和类似讨论 here [ ^ ]


HI,

i am using log4net.dll to store my log details into the database,but unable store the data because of wrong settings i made. Can anyone send me a configuration settings for log4net.dll to store data to database.

  //web.xml
<?xml version="1.0"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <configSections>
    <section name="log4net"
      type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
 
  <log4net>
    <root>
      <level value="INFO"/>
      <!--<appender-ref ref="FileAppender"/>-->
      <appender-ref ref="AdoNetAppender" />
    </root>
    
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <bufferSize value="100" />
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <connectionString value="data source=SQLSERVER05;initial catalog=vardb;integrated security=false;persist security info=True;User ID=sa;Password=sasa" />
      <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>
  <connectionStrings>
    <add name="Constr" connectionString="data source=DELL-XP1\SQLSERVER05;initial catalog=vardb;integrated security=false;persist security info=True;User ID=sa;Password=sasa"/>
    
  </connectionStrings>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    

    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>

    <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="/" />
      </providers>
    </membership>

    <profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
      </providers>
    </profile>

    <roleManager enabled="false">
      <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>
    <machineKey validationKey="1619AB2FDEE6B943AD5D31DD68B7EBDAB32682A5891481D9403A6A55C4F91A340131CB4F4AD26A686DF5911A6C05CAC89307663656B62BE304EA66605156E9B5" decryptionKey="C9D165260E6A697B2993D45E05BD64386445DE01031B790A60F229F6A2656ECF" validation="SHA1" decryption="AES" />


  </system.web>
  
  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>



//Global.asax

void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
log4net.Config.DOMConfigurator.Configure();
}

//assembly.info

[assembly: log4net.Config.XmlConfigurator(Watch = true)]


//myweb.aspx.cs

 private static readonly log4net.ILog log = log4net.LogManager.GetLogger
    (System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        protected void Page_Load(object sender, EventArgs e)
        {
            log.Info("Info logging");
            log.Debug("Debug logging");
            log.Error("Error logging");
            log.Fatal("Fatal logging");          

        }

// and added dll reference (log4net.dll)

解决方案

If you read down in my article (log4net Tutorial[^]) you will see that if you are logging to SQL, you have to check your buffer size. If you leave it at the default of 100, log4net will wait until you have 100 messages in the queue before it writes them to SQL. If you change that buffer to be 1, it will write a log message immediately like you would expect.


Refer log4net Tutorial[^]

and similar discussion here[^]


这篇关于log4net到数据库的错误日志的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆