You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-user@logging.apache.org by Kevin Parkinson <ke...@quercussolutions.com> on 2007/06/20 18:29:16 UTC

Custom Parameters Not Working

Hello Everyone:

 

                I am having a problem getting Log4Net to log because a
particular Guid parameter I am using.

 

Here is what I have in my config file:

 

<parameter>

<parameterName value="@messageID" />

                <dbType value="Guid" />

                <size value="10" />

                <layout type="log4net.Layout.PatternLayout"
value="%property{QueryServiceMessageID}" />

</parameter>

 

Here is my property in code:

 

 Guid messageID = new Guid("7d32ea24-289c-48d7-9037-7c3caa75a87c");

        log4net.GlobalContext.Properties["QueryServiceMessageID"] =
messageID;

 

Here is the stack trace I am getting through internal debugging:

 

log4net:ERROR [AdoNetAppender] Exception while writing to database

System.InvalidCastException: Failed to convert parameter value from a
String to a Guid. ---> System.InvalidCastException: Invalid cast from
'System.String' to 'System.Guid'.

   at System.Convert.DefaultToType(IConvertible value, Type targetType,
IFormatProvider provider)

   at System.String.System.IConvertible.ToType(Type type,
IFormatProvider provider)

   at System.Convert.ChangeType(Object value, Type conversionType,
IFormatProvider provider)

   at System.Data.SqlClient.SqlParameter.CoerceValue(Object value,
MetaType destinationType)

   --- End of inner exception stack trace ---

   at System.Data.SqlClient.SqlParameter.CoerceValue(Object value,
MetaType destinationType)

   at System.Data.SqlClient.SqlParameter.GetCoercedValue()

   at System.Data.SqlClient.SqlParameter.Validate(Int32 index)

   at System.Data.SqlClient.SqlCommand.BuildParamList(TdsParser parser,
SqlParameterCollection parameters)

   at System.Data.SqlClient.SqlCommand.BuildPrepExec(CommandBehavior
behavior)

   at
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean
async)

   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String
method, DbAsyncResult result)

   at
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult
result, String methodName, Boolean sendToPipe)

   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()

   at log4net.Appender.AdoNetAppender.SendBuffer(IDbTransaction dbTran,
LoggingEvent[] events)

 

Can anyone make any recommendations or point out any errors? Any help is
much appreciated.

 

Kevin Parkinson

 


RE: Custom Parameters Not Working

Posted by Kevin Parkinson <ke...@quercussolutions.com>.
Hello:

 

                Regarding my lasat post, I have been trying out
log4net.Layout.RawPropertyLayout as the layout type for my Guid
parameter, like so:

 

<parameter>

<parameterName value="@messageID" />

                <dbType value="Guid" />

                <size value="36" />

                <layout type="log4net.Layout.RawPropertyLayout"
value="7d32ea24-289c-48d7-9037-7c3caa75a87c" />

</parameter>

 

I have also tried setting my <layout ... value="%property{messageID}" />
too...in both cases I am getting this message from internal debugging:

 

log4net:WARN XmlHierarchyConfigurator: Unable to set property [layout]
on object [log4net.Appender.AdoNetAppenderParameter] using value
[7d32ea24-289c-48d7-9037-7c3caa75a87c] (with acceptable conversion
types).

 

...and I have also tried wrapping the Guid value like
Guid(7d32ea24-289c-48d7-9037-7c3caa75a87c).

 

Anyone have any ideas or feedback? Thanks!

 

 

 

From: Kevin Parkinson [mailto:kevin.parkinson@quercussolutions.com] 
Sent: June-20-07 10:29 AM
To: log4net-user@logging.apache.org
Subject: Custom Parameters Not Working

 

Hello Everyone:

 

                I am having a problem getting Log4Net to log because a
particular Guid parameter I am using.

 

Here is what I have in my config file:

 

<parameter>

<parameterName value="@messageID" />

                <dbType value="Guid" />

                <size value="10" />

                <layout type="log4net.Layout.PatternLayout"
value="%property{QueryServiceMessageID}" />

</parameter>

 

Here is my property in code:

 

 Guid messageID = new Guid("7d32ea24-289c-48d7-9037-7c3caa75a87c");

        log4net.GlobalContext.Properties["QueryServiceMessageID"] =
messageID;

 

Here is the stack trace I am getting through internal debugging:

 

log4net:ERROR [AdoNetAppender] Exception while writing to database

System.InvalidCastException: Failed to convert parameter value from a
String to a Guid. ---> System.InvalidCastException: Invalid cast from
'System.String' to 'System.Guid'.

   at System.Convert.DefaultToType(IConvertible value, Type targetType,
IFormatProvider provider)

   at System.String.System.IConvertible.ToType(Type type,
IFormatProvider provider)

   at System.Convert.ChangeType(Object value, Type conversionType,
IFormatProvider provider)

   at System.Data.SqlClient.SqlParameter.CoerceValue(Object value,
MetaType destinationType)

   --- End of inner exception stack trace ---

   at System.Data.SqlClient.SqlParameter.CoerceValue(Object value,
MetaType destinationType)

   at System.Data.SqlClient.SqlParameter.GetCoercedValue()

   at System.Data.SqlClient.SqlParameter.Validate(Int32 index)

   at System.Data.SqlClient.SqlCommand.BuildParamList(TdsParser parser,
SqlParameterCollection parameters)

   at System.Data.SqlClient.SqlCommand.BuildPrepExec(CommandBehavior
behavior)

   at
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean
async)

   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String
method, DbAsyncResult result)

   at
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult
result, String methodName, Boolean sendToPipe)

   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()

   at log4net.Appender.AdoNetAppender.SendBuffer(IDbTransaction dbTran,
LoggingEvent[] events)

 

Can anyone make any recommendations or point out any errors? Any help is
much appreciated.

 

Kevin Parkinson