我试图在我的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复制它时,我不确定从何处获取。
答案 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>