2013-03-07 78 views
0

我在VS 2012中的WCF应用程序中使用此代码,SQL Express是2008 R2。log4net没有插入数据库,但对文件工作正常

我已经包含了fileAppendor和Database Appendor,File Appender工作正常,但是它并没有将数据插入到数据库中。

我已验证相同的连接字符串其工作正常,并将记录插入表中。

而且我已经设置了缓冲值设置为1,仍然没有运气

<bufferSize value="1" /> 

这是我的配置文件

<?xml version="1.0"?> 
<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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <connectionString value="server=(local)\\SQLEXPRESS;database=Log_DB;Integrated Security=SSPI;Connection Timeout=360;" /> 
     <connectionString value="data source=[(local)\\SQLEXPRESS];initial catalog=[Log_DB];integrated security=SSPI" /> 

     <commandText value="INSERT INTO [Error_Log] ([Date_time]) VALUES (@Date_time)" /> 
     <parameter> 
     <parameterName value="@Date_time" /> 
     <dbType value="DateTime" /> 
     <!--<layout type="log4net.Layout.RawTimeStampLayout" />--> 
     <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}" /> 
     </parameter> 
      </appender> 

    <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 
     <file value="log-file.txt"/> 
     <appendToFile value="true"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%ndc] ID=%property{EventID} - %message%newline" /> 
     </layout> 
    </appender> 

    <!-- Setup the root category, add the appenders and set the default level --> 
    <root> 
     <level value="ALL" /> 
     <appender-ref ref="LogFileAppender" /> 
     <appender-ref ref="AdoNetAppender" /> 
    </root> 
    </log4net> 


    <appSettings> 
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> 
    <add key="log4net.Internal.Debug" value="true"/> 
    </appSettings> 
... 

</configuration> 

难道我错过了任何其他的东西?

另外我没有通过将Internal.Debug设置为true来获取任何信息。 如何获得log4net的内部调试细节?

回答

1

最终我得到了答案,我在这里分享,因为它可以帮助别人。

在连接字符串中需要使用系统/机器名称而不是(本地)。即使使用dotnet应用程序(本地)工作,但对于log4net,也需要使用系统名称。