|
[
Permlink
| « Hide
]
Nicko Cadell added a comment - 03/May/05 07:52 PM
Fix to AdoNetAppenderParameter FormatValue to convert the null runtime value to DBNull value.
The PatternLayout uses SystemInfo.NullText which returns a string "(null)" not the null value. If you use a custom property and set it to null, you will not have the parameter set to DBNull.
The PatternConverter.WriteObject(TextWriter writer, ILoggerRepository repository, object value) calls repository.RendererMap.FindAndRender(value, writer); which in turn, sets the value to "(null)" because the object value is null. if (obj == null) { writer.Write(SystemInfo.NullText); } else { ..... Maybe it should be if (formattedValue == null || formattedValue.ToString() == SystemInfo.NullText) { formattedValue = DBNull.Value; } Its generally a good idea to post general questions about log4net to the mailing lists first. This issue has been closed for almost 3 years.
Are you using a RawPropertyLayout layout? <parameter> <parameterName value="@productId" /> <dbType value="String" /> <size value="50" /> <layout type=" log4net.Layout.RawPropertyLayout"> <key value="ProductId" /> </layout> </parameter> log.Debug("Message"); // snip IDbDataParameter param = (IDbDataParameter)command.Parameters["@productId"]; Assert.AreEqual(DBNull.Value, param.Value); |
||||||||||||||||||||||||||||||||||||||||||||||||||