Have a look at the log4net.Layout.RawPropertyLayout class.  I use that
for my layout type, and still set the DbType to "Guid".  I believe the
log4net.Layout.RawPropertyLayout class was introduced in beta9, but you
should be able to get it locally and incorporate it into your own build.
At least that's what worked for me.  ;)

-----Original Message-----
From: David Elliott [mailto:[EMAIL PROTECTED] 
Sent: Monday, April 11, 2005 1:43 PM
To: log4net-user@logging.apache.org
Subject: Help inserting GUID using AdoNetAppender 

I am trying to insert a uniqueidentifier (Guid) into a Sql Server table
and am having problems.  I'm using log4net-1.2.0-beta8.


CREATE TABLE [dbo].[Log_Test1] (
        [ID] [int] IDENTITY (1, 1) NOT NULL ,
        [DateTime] [datetime] NOT NULL ,
        [RequestID] [uniqueidentifier] NOT NULL ,
        [TaskID] [tinyint] NOT NULL ,
        [State] [tinyint] NOT NULL
) ON [PRIMARY]



<parameter>
    <parameterName value="@reqid" />
    <dbType value="uniqueidentifier" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%X{reqid}" />
    </layout>
</parameter>


On startup of the application, I get the following error.

log4net: DOMConfigurator: Setting Collection Property [AddParameter] to 
object [log4net.Appender.ADONetAppenderParameter]
log4net: DOMConfigurator: Setting Property [ParameterName] to String
value 
[EMAIL PROTECTED]
log4net:ERROR DOMConfigurator: Could not create Appender [MyDBAppender]
of 
type[log4net.Appender.AdoNetAppender]. Reported error follows.
System.ArgumentException: Requested value uniqueidentifier was not
found.
   at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)
   at log4net.helpers.OptionConverter.ParseEnum(Type enumType, String
value, 
Boolean ignoreCase)
   at log4net.helpers.OptionConverter.ConvertStringTo(Type target,
String 
txt)
   at 
log4net.Repository.Hierarchy.DOMHierarchyConfigurator.ConvertStringTo(Ty
pe 
type, String value)
   at 
log4net.Repository.Hierarchy.DOMHierarchyConfigurator.SetParameter(XmlEl
ement 
element, Object target)
   at 
log4net.Repository.Hierarchy.DOMHierarchyConfigurator.CreateObjectFromXm
l(XmlElement 
element, Type defaultTargetType, Type typeConstraint)
   at 
log4net.Repository.Hierarchy.DOMHierarchyConfigurator.SetParameter(XmlEl
ement 
element, Object target)
   at 
log4net.Repository.Hierarchy.DOMHierarchyConfigurator.ParseAppender(XmlE
lement 
appenderElement)
log4net:ERROR DOMConfigurator: Appender named [MyDBAppender] not found.



If I change to Using "Guid"

<parameter>
    <parameterName value="@reqid" />
    <dbType value="Guid" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%X{reqid}" />
    </layout>
</parameter>

then it will load but then thrown an exception on insertion.


log4net:ERROR [ADONetAppender] Exception while writing to database
System.InvalidCastException: Invalid cast from System.String to
System.Guid.
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior 
cmdBehavior, RunBehavior runBehavior, Boolean returnStream)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at log4net.Appender.ADONetAppender.SendBuffer(IDbTransaction dbTran, 
LoggingEvent[] events)
   at log4net.Appender.ADONetAppender.SendBuffer(LoggingEvent[] events)


Any thoughts would be appreciated.


Dave

_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's
FREE! 
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/

Reply via email to