在log4net配置中使用存储过程

时间:2017-03-21 13:37:08

标签: c# log4net

我试图在我的C#控制台应用程序中使用log4net。我不太确定它如何与存储过程一起使用。使用下面的配置信息,如果我传递的所有内容都是消息字符串,那么log.Info("message here")之类的内容将如何使用参数执行存储过程?

我使用SQL Server Express作为数据库。在AssemblyInfo.cs我添加了以下内容:

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

根据我在StackOverflow上找到的内容,我在app.config中有以下内容:

<root>
  <level value="DEBUG" />
  <appender-ref ref="FileAppender" />
  <appender-ref ref="ConsoleAppender" />
  <appender-ref ref="AdoNetAppender" />
</root>
<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<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" />
    <connectionString value="data source=MyPC\\SQLEXPRESSPC;initial catalog=MyDBName;integrated security=false;persist security info=True;User ID=MyDBUser;Password=MyDBPassword" />

    <commandText value="InsertGoogleDriveLog" />
    <commandType value="StoredProcedure" />

    <parameter>
        <parameterName value="@user_name" />
        <dbType value="String" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%username" />
        </layout>
    </parameter>
    <parameter>
        <parameterName value="@message_text" />
        <dbType value="String" />
        <size value="1024" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%message" />
        </layout>
    </parameter>
</appender>

在我的记录器类中,我有一行:

log.Info("OK, here we are");  

此外,我从connectionType字符串值中删除了, PublicKeyToken=b77a5c561934e089,因为当我从问题here复制它时,我不确定从何处获取。

1 个答案:

答案 0 :(得分:1)

您的配置中似乎缺少一些元素(log4net - &gt;应该包含root和appender元素):

<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
 <root>
  <level value="DEBUG" />
  <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" />
    <connectionString value="data source=MyPC\\SQLEXPRESSPC;initial catalog=MyDBName;integrated security=false;persist security info=True;User ID=MyDBUser;Password=MyDBPassword" />

    <commandText value="InsertGoogleDriveLog" />
    <commandType value="StoredProcedure" />

    <parameter>
        <parameterName value="@user_name" />
        <dbType value="String" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%username" />
        </layout>
    </parameter>
    <parameter>
        <parameterName value="@message_text" />
        <dbType value="String" />
        <size value="1024" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%message" />
        </layout>
    </parameter>
 </appender>
</log4net>