I am trying to set a
SQL Server text field to null if the string I am putting in is null.
If I set the
properties like this:
if (stringText ==
null)
loggingEvent.Properties["@textData1"] =
System.DBNull.Value;
else
loggingEvent.Properties["@textData1"] = stringText;
An exception is thrown in
log4net when it trys to execute the command. The exception's message is
something like "The statement is incorrect". It works fine if I put an
empty string in the property like this:
if (stringText ==
null)
loggingEvent.Properties["@textData1"] = string.empty;
else
loggingEvent.Properties["@textData1"] = stringText;
Do I need to use a
different layout for the @textdata1 parameter to get this to
work?
If so, is there an
existing one that will work?
I think what the
layout needs to do is put null in the commandtext when the value is null or
System.DBNull.Value.
Any
suggestions?
thanks,
Nick
<log4net debug="true">
<appender name="DatabaseAppender"
type="log4net.Appender.ADONetAppender">
<bufferSize value="1" />
<param name="ConnectionType"
value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<commandText value="INSERT INTO [RescueNetLog]
([LogDate],
[User],[File],[Message],[LineNumber],[Level],[Type],[Component],[Machine],[Thread],[Function],[Logger],[StringData1],[StringData2],[StringData3],[FloatData1],[FloatData2],[FloatData3],[TextData1])
VALUES (@log_date, @user, @file, @message, @line_number, @level, @type,
@component, @machine, @thread, @function, @logger, @stringdata1, @stringdata2,
@stringdata3, @floatdata1, @floatdata2, @floatdata3, @textData)" />
<param name="Parameter">
<param name="ParameterName" value="@textdata1"
/>
<param name="DbType" value="String"
/>
<param name="Size" value="4000"
/>
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="[EMAIL PROTECTED]" />
</param>
</param>
<param
name="Parameter"><param name="ParameterName" value="@user"
/>
<param name="DbType" value="String"
/>
<param name="Size" value="50" />
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@file"
/>
<param name="DbType" value="String"
/>
<param name="Size" value="250"
/>
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@message"
/>
<param name="DbType" value="String"
/>
<param name="Size" value="3000"
/>
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@line_number"
/>
<param name="DbType" value="String"
/>
<param name="Size" value="50" />
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@level"
/>
<param name="DbType" value="String"
/>
<param name="Size" value="25" />
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%p"
/>
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@type"
/>
<param name="DbType" value="String"
/>
<param name="Size" value="25" />
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@component"
/>
<param name="DbType" value="String"
/>
<param name="Size" value="100"
/>
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%a"
/>
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@machine"
/>
<param name="DbType" value="String"
/>
<param name="Size" value="50" />
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@thread"
/>
<param name="DbType" value="String"
/>
<param name="Size" value="10" />
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%t"
/>
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@log_date"
/>
<param name="DbType" value="DateTime"
/>
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@function"
/>
<param name="DbType" value="String"
/>
<param name="Size" value="250"
/>
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@logger"
/>
<param name="DbType" value="String"
/>
<param name="Size" value="250"
/>
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%c"
/>
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@stringdata1"
/>
<param name="DbType" value="String"
/>
<param name="Size" value="1000"
/>
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@stringdata2"
/>
<param name="DbType" value="String"
/>
<param name="Size" value="1000"
/>
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@stringdata3"
/>
<param name="DbType" value="String"
/>
<param name="Size" value="1000"
/>
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@floatdata1"
/>
<param name="DbType" value="Double"
/>
<param name="Size" value="8" />
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@floatdata2"
/>
<param name="DbType" value="Double"
/>
<param name="Size" value="8" />
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="[EMAIL PROTECTED]" />
</param>
</param>
<param name="Parameter">
<param name="ParameterName" value="@floatdata3"
/>
<param name="DbType" value="Double"
/>
<param name="Size" value="8" />
<param name="Layout"
type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="[EMAIL PROTECTED]" />
</param>
</param>
</appender>
<!-- Level Hierarchy: OFF, FATAL, ERROR, WARN,
INFO, DEBUG, TRACE, VERBOSE, ALL -->
<logger name="zolldata"
additivity="false">
<level value="INFO" />
<appender-ref ref="DatabaseAppender"
/>
</logger>
</log4net>
