Howard,
Try specifying the int param using the RawPropertyLayout. This layout
does no conversion on the value found (or null if not found) in the
properties dictionary.
<parameter>
<parameterName value="@spid" />
<dbType value="Int32" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="spid" />
</layout>
</parameter>
Nicko
> -----Original Message-----
> From: Howard Weisberg [mailto:[EMAIL PROTECTED]
> Sent: 26 April 2005 01:26
> To: Log4NET User
> Subject: RE: Null values for int (revised)
>
> I'm logging data using AdoNetAppender_SqlServer. Some of the
> info I want to log is best expressed in SQL columns of the
> int data type. Also some of the information is only defined
> during certain events.
>
> Ideally, when I log other events, the undefined int
> information should be shown as SQL nulls. However so far I've
> only been able to figure out how to log int values using a
> "magic" numerical value (in my case zero) to flag undefined values.
>
> Null values do seem to be supported for string data.
>
> The following doesn't work for me. It causes the SQL
> exception "data is not in the correct format."
>
> int spid = MyGetSPID (transaction);
> log4net.GlobalContext.Properties["spid"] = spid;
> transaction.Commit(); EventLog.Info ("Database Updated");
> log4net.GlobalContext.Properties["spid"] = null;
> //log4net.GlobalContext.Properties.Remove("spid") also doesn't work.
>
> Instead I have to use the following:
>
> const int UNDEFINED_VALUE = 0;
> int spid = MyGetSPID (transaction);
> log4net.GlobalContext.Properties["spid"] = spid;
> transaction.Commit(); EventLog.Info ("Database Updated");
> log4net.GlobalContext.Properties["spid"] = UNDEFINED_VALUE;
>
> My config file includes the following:
>
> <commandText value="INSERT INTO EventLog ([Date], ...,
> [SPID]) VALUES (@date, ..., @spid)" /> <parameter>
> <parameterName value="@date" />
> <dbType value="DateTime" />
> <layout type="log4net.Layout.PatternLayout"
> value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}" /> </parameter>
>
> ...
>
> <parameter>
> <parameterName value="@spid" />
> <dbType value="Int32" />
> <layout type="log4net.Layout.PatternLayout"
> value="%property{spid}" /> </parameter>
>
> My table includes the following:
>
> CREATE TABLE EventLog
> (
> [ID] [int] IDENTITY (1, 1) NOT NULL ,
> [Date] [datetime] NOT NULL ,
>
> ...
>
> [SPID] [int]
> )
>
> How do I get log4net to handle null integer values?
>
> The information contained in this e-mail and any attached
> documents may be privileged, confidential and protected from
> disclosure. If you are not the intended recipient you may
> not read, copy, distribute or use this information. If you
> have received this communication in error, please notify the
> sender immediately by replying to this message and then
> delete it from your system.
>
>