I'm trying to patch an AdoNetAppender using the log4net.Appender.AdoNetAppender, log4net
appender by doing the following:
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<log4net>
<appender name="AdoNetAppender" patch:after="*[@name='PublishingLogFileAppender']" type="log4net.Appender.AdoNetAppender, log4net">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionStringName value="Log4netConnectionString" />
By enabling the log4net internal debbuging, I noticed the following error:
log4net: DOMConfigurator: Loading Appender [AdoNetAppender] type: [log4net.Appender.AdoNetAppender, log4net]
log4net:ERROR DOMConfigurator: Could not create Appender [AdoNetAppender] of type [log4net.Appender.AdoNetAppender, log4net]. Reported error follows. System.InvalidCastException: Unable to cast object of type 'log4net.Appender.AdoNetAppender' to type 'log4net.Appender.IAppender'. at log4net.Repository.Hierarchy.DOMHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
log4net:ERROR DOMConfigurator: Appender named [AdoNetAppender] not found.
I wonder if Sitecore is trying to cast the log4net.Appender.AdoNetAppender, log4net
to type log4net.Appender.IAppender, Sitecore.Logging
.
First question would be: Is it possible to use log4net.Appender.AdoNetAppender, log4net
appender?
I tried to use the log4net.Appender.AdoNetAppender, Sitecore.Logging
before, but it is very limited. e.g. there is not RawPropertyLayout
and the PatternLayout
doesn't work the same way as in the log4net assembly.
Update 1
If I change the type to log4net.Appender.AdoNetAppender
(without the , log4net
) as below, I get errors such as [log4net.Layout.PatternLayout] is not assignable to type [log4net.Layout.IRawLayout]
.
<appender name="AdoNetAppender" patch:after="*[@name='PublishingLogFileAppender']" type="log4net.Appender.AdoNetAppender">
[...]
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.PatternLayout, log4net">
<conversionPattern value="%utcdate{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}" />
</layout>
</parameter>
I believe it is due to the fact that I'm using log4net.Layout.PatternLayout, log4net
layouts.
log4net:ERROR DOMConfigurator: Object type [log4net.Layout.PatternLayout] is not assignable to type [log4net.Layout.IRawLayout]. There are no acceptable type convertions. log4net:ERROR DOMConfigurator: Failed to create object to set param: layout
Also, I get the following error:
log4net:ERROR DOMConfigurator: Cannot find Property [connectionStringName] to set object on [log4net.Appender.ADONetAppender]
I believe Sitecore is assuming log4net.Appender.AdoNetAppender, Sitecore.Logging
if I omit the log4net from the type.