如何使用存储过程log4net的内部配置为SQL Server日志记录 [英] How to use stored proc inside log4net configuration for SQL Server for logging
问题描述
我如何更新的CommandText
和参数部分的存储过程,这样我可以通过log4net的?
我使用SQL Server 2008和我的附加器的配置是这样的:
<追加程序名称=ADONetAppenderTYPE =log4net.Appender.ADONetAppender>
< BUFFERSIZE值=100/>
< connectionType值=System.Data.SqlClient.SqlConnection,System.Data这,版本= 2.0.0.0,文化=中性公钥= b77a5c561934e089/>
<连接字符串值=服务器= MYSERVER; UID = MYUSER; PWD =为mypass;数据库= MYDB/>
<的CommandText
值=INSERT INTO日志([日期],[主题],[等级],[记录器],[信息],[例外])VALUES(@log_date,@thread,@log_level,@Logger,@message,抛出) />
<&参数GT;
<参数名称值=@ LOG_DATE/>
< DBTYPE值=日期时间/>
<布局类型=log4net.Layout.RawTimeStampLayout/>
< /参数>
<&参数GT;
<参数名称值=@丝/>
< DBTYPE值=字符串/> <大小值=255/>
<布局类型=log4net.Layout.PatternLayout>
< conversionPattern值=%线程/>
< /布局>
< /参数>
<&参数GT;
<参数名称值=@ LOG_LEVEL/>
< DBTYPE值=字符串/>
<大小值=50/>
<布局类型=log4net.Layout.PatternLayout>
< conversionPattern值=%的水平/>
< /布局>
< /参数>
<&参数GT;
<参数名称值=@记录器/>
< DBTYPE值=字符串/>
<大小值=255/>
<布局类型=log4net.Layout.PatternLayout>
< conversionPattern值=%记录器/>
< /布局>
< /参数>
<&参数GT;
<参数名称值=@消息/>
< DBTYPE值=字符串/>
<大小值=4000/>
<布局类型=log4net.Layout.PatternLayout>
< conversionPattern值=%消息/>
< /布局>
< /参数>
<&参数GT;
<参数名称值=@异常/>
< DBTYPE值=字符串/>
<大小值=2000/>
<布局类型=log4net.Layout.ExceptionLayout/>
< /参数>
< /附加器>
试用:
< CommandText中值=StorProcName/>
<命令类型值=StoredProcedure的/> <&参数GT;
<参数名称值=@ LOG_DATE/>
< DBTYPE值=日期时间/>
<布局类型=log4net.Layout.RawTimeStampLayout/>
< /参数>
......所有参数...
的
的CommandText要么是prepared语句或存储过程。每个参数的
prepared语句或存储过程与它的名字规定,
数据库的类型和呈现为参数的值的布局。
块引用>How do I update the
commandText
and parameter section for stored procedure so that I could log the errors into SQL Server via log4net?I am using SQL Server 2008, and my appender configuration looks like this:
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender"> <bufferSize value="100"/> <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> <connectionString value="server=MYSERVER; uid=MYUSER; pwd=MYPASS; database=MYDB"/> <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>
解决方案Try out:
<commandText value="StorProcName" /> <commandType value="StoredProcedure" /> <parameter> <parameterName value="@log_date" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> ... all parameters ...
log4net online config examples page:
The CommandText is either a prepared statement or a stored procedure. Each parameter to the prepared statement or stored procedure is specified with its name, database type and a layout that renders the value for the parameter.
这篇关于如何使用存储过程log4net的内部配置为SQL Server日志记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!