在 log4net 配置中使用存储过程
Using stored procedures in log4net configuration
我正在尝试在我的 C# 控制台应用程序中使用 log4net。我不太确定这是如何与存储过程一起使用的。使用下面的配置信息,如果我传递的只是消息字符串,log.Info("message here")
之类的操作将如何执行带参数的存储过程?
我正在使用 SQL Server Express 作为数据库。在 AssemblyInfo.cs
中,我添加了以下行:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
根据我在 Whosebug 上找到的内容,我的 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>
在我的记录器中 class 我有一行:
log.Info("OK, here we are");
此外,我从 connectionType 字符串值中删除了 , PublicKeyToken=b77a5c561934e089
,因为当我从问题 here.
中复制它时,我不确定它是从哪里获得的
您的配置中似乎缺少一些元素(log4net -> 应该包含根元素和附加元素):
<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>
我正在尝试在我的 C# 控制台应用程序中使用 log4net。我不太确定这是如何与存储过程一起使用的。使用下面的配置信息,如果我传递的只是消息字符串,log.Info("message here")
之类的操作将如何执行带参数的存储过程?
我正在使用 SQL Server Express 作为数据库。在 AssemblyInfo.cs
中,我添加了以下行:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
根据我在 Whosebug 上找到的内容,我的 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>
在我的记录器中 class 我有一行:
log.Info("OK, here we are");
此外,我从 connectionType 字符串值中删除了 , PublicKeyToken=b77a5c561934e089
,因为当我从问题 here.
您的配置中似乎缺少一些元素(log4net -> 应该包含根元素和附加元素):
<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>