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