Ron that worked beautifully. In case anyone else runs across this issue or something similar, I built a couple of other Adapters based on the same model. Here are all of the adapters in all their glory.
‘In class AdditionalPatternStringAdapters
#Region "Boolean Pattern String"
Public Class PatternStringToBooleanAdapter
Implements TypeConverters.IConvertTo
Private _ConversionPattern As String
Public Property ConversionPattern() As String
Get
Return _ConversionPattern
End Get
Set(ByVal value As String)
_ConversionPattern = value
End Set
End Property
Public Function CanConvertTo(ByVal targetType As Type) As Boolean Implements TypeConverters.IConvertTo.CanConvertTo
Console.WriteLine("Taget Type is: " & targetType.ToString & _
" | Cast Type is: " & GetType(Boolean).ToString & " | CASTABLE: " & (targetType Is GetType(Int32)).ToString)
Return targetType Is GetType(Boolean)
End Function
Public Function ConvertTo(ByVal source As Object, ByVal targetType As Type) As Object Implements TypeConverters.IConvertTo.ConvertTo
Dim patternStringToBooleanAdapter = DirectCast(source, PatternStringToBooleanAdapter)
Dim patternString = New PatternString(patternStringToBooleanAdapter.ConversionPattern)
Dim value As String = patternString.Format()
Return OptionConverter.ToBoolean(value, False)
End Function
End Class
#End Region
#Region "Int32 Pattern String"
Public Class PatternStringToInt32Adapter
Implements TypeConverters.IConvertTo
Private _ConversionPattern As String
Public Property ConversionPattern() As String
Get
Return _ConversionPattern
End Get
Set(ByVal value As String)
_ConversionPattern = value
End Set
End Property
Public Function CanConvertTo(ByVal targetType As Type) As Boolean Implements TypeConverters.IConvertTo.CanConvertTo
Console.WriteLine("Taget Type is: " & targetType.ToString & _
" | Cast Type is: " & GetType(Int32).ToString & " | CASTABLE: " & (targetType Is GetType(Int32)).ToString)
Return targetType Is GetType(Int32)
End Function
Public Function ConvertTo(ByVal source As Object, ByVal targetType As Type) As Object Implements TypeConverters.IConvertTo.ConvertTo
Dim patternStringToInt32Adapter = DirectCast(source, PatternStringToInt32Adapter)
Dim patternString = New PatternString(PatternStringToInt32Adapter.ConversionPattern)
Dim value As String = patternString.Format()
If value IsNot Nothing AndAlso value.Length > 0 Then
Try
Return Int32.Parse(value)
Catch e As Exception
Console.WriteLine("AdditionalPatternStrings.PatternStringToInt32Adapter: [" & value & "] is not in proper Int32 form.", e)
value = 8
End Try
Else
value = 8
End If
Return value
End Function
End Class
#End Region
#Region "Rolling Mode Pattern String"
Public Class PatternStringToRollingModeAdapter
Implements TypeConverters.IConvertTo
Private _ConversionPattern As String
Public Property ConversionPattern() As String
Get
Return _ConversionPattern
End Get
Set(ByVal value As String)
_ConversionPattern = value
End Set
End Property
Public Function CanConvertTo(ByVal targetType As Type) As Boolean Implements TypeConverters.IConvertTo.CanConvertTo
Console.WriteLine("Taget Type is: " & targetType.ToString & _
" | Cast Type is: " & GetType(log4net.Appender.RollingFileAppender.RollingMode).ToString & " | CASTABLE: " & (targetType Is GetType(log4net.Appender.RollingFileAppender.RollingMode)).ToString)
Return targetType Is GetType(log4net.Appender.RollingFileAppender.RollingMode)
End Function
Public Function ConvertTo(ByVal source As Object, ByVal targetType As Type) As Object Implements TypeConverters.IConvertTo.ConvertTo
Dim patternStringToRollingModeAdapter = DirectCast(source, PatternStringToRollingModeAdapter)
Dim patternString = New PatternString(patternStringToRollingModeAdapter.ConversionPattern)
Dim value As String = patternString.Format()
Console.WriteLine("AdditionalPatternStrings.PatternStringRollingModeAdapter: [" & value & "] is the asking to be converted.")
If value IsNot Nothing AndAlso value.Length > 0 Then
Try
Select Case value
Case "Composite"
Return log4net.Appender.RollingFileAppender.RollingMode.Composite
Case "Once"
Return log4net.Appender.RollingFileAppender.RollingMode.Composite
End Select
Catch e As Exception
Console.WriteLine("AdditionalPatternStrings.PatternStringToRollingModeAdapter: [" & value & "] is not in proper Rolling Mode form.", e)
value = log4net.Appender.RollingFileAppender.RollingMode.Composite
End Try
Else
value = log4net.Appender.RollingFileAppender.RollingMode.Composite
End If
Return log4net.Appender.RollingFileAppender.RollingMode.Composite
End Function
End Class
#End Region
‘In Main
log4net.Util.TypeConverters.ConverterRegistry.AddConverter(GetType(PatternStringToBooleanAdapter), New PatternStringToBooleanAdapter())
log4net.Util.TypeConverters.ConverterRegistry.AddConverter(GetType(PatternStringToInt32Adapter), New PatternStringToInt32Adapter())
log4net.Util.TypeConverters.ConverterRegistry.AddConverter(GetType(PatternStringToRollingModeAdapter), New PatternStringToRollingModeAdapter())
‘In Configuration File
<appender name="SyncLogFile" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="%property{LogPath}\Synchronizations\%property{LogName}" />
<datePattern value="yyyy-MM-dd'.log'"/>
<appendToFile type="FileSync.PatternStringToBooleanAdapter, FileSync">
<conversionPattern value="%property{isAppendToFile}" />
</appendToFile >
<maxSizeRollBackups type="FileSync.PatternStringToInt32Adapter, FileSync">
<conversionPattern value="%property{MaxRollBacks}" />
</maxSizeRollBackups >
<maximumFileSize type="log4net.Util.PatternString" value="%property{MaxFileSize}" />
<staticLogFileName type="FileSync.PatternStringToBooleanAdapter, FileSync">
<conversionPattern value="%property{isStaticLogFile}" />
</staticLogFileName>
<rollingStyle type="FileSync.PatternStringToRollingModeAdapter, FileSync">
<conversionPattern value="%property{RollStyle}" />
</rollingStyle>
<layout type="log4net.Layout.PatternLayout">
<header type="log4net.Util.PatternString" value="**************************************** Logging Started - %date ****************************************** " />
<footer type="log4net.Util.PatternString" value="**************************************** Logging Ended - %date ****************************************** " />
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
Senior OS/Network Specialist
http://www.we-are-it.com/