diff --git a/Service.EDMIService/App.config b/Service.EDMIService/App.config index 4d9ba156..90304c22 100644 --- a/Service.EDMIService/App.config +++ b/Service.EDMIService/App.config @@ -4,7 +4,10 @@ - + diff --git a/Service.EDMIService/EDMIService.vbproj b/Service.EDMIService/EDMIService.vbproj index 74fd818f..17da2e73 100644 --- a/Service.EDMIService/EDMIService.vbproj +++ b/Service.EDMIService/EDMIService.vbproj @@ -133,6 +133,7 @@ + diff --git a/Service.EDMIService/Helpers/TraceSwitch.vb b/Service.EDMIService/Helpers/TraceSwitch.vb new file mode 100644 index 00000000..f34db423 --- /dev/null +++ b/Service.EDMIService/Helpers/TraceSwitch.vb @@ -0,0 +1,34 @@ +Public Class TraceSwitch + Inherits SourceSwitch + + Public Sub New(Name As String) + MyBase.New("System.ServiceModel") + Level = SourceLevels.Information + WcfTracesController.Instance.LevelController = AddressOf WcfTracesLevelController + End Sub + + Public Sub WcfTracesLevelController(ByVal level As SourceLevels) + Me.Level = level + End Sub +End Class + +Public Class WcfTracesController + Private Shared Controller As WcfTracesController = Nothing + + Private Sub New() + End Sub + + Public Delegate Sub TraceLevelController(ByVal level As SourceLevels) + Public LevelController As TraceLevelController + + Public Shared ReadOnly Property Instance As WcfTracesController + Get + + If Controller Is Nothing Then + Controller = New WcfTracesController() + End If + + Return Controller + End Get + End Property +End Class diff --git a/Service.EDMIService/ServiceHost.vb b/Service.EDMIService/ServiceHost.vb index e24905d0..9680df2e 100644 --- a/Service.EDMIService/ServiceHost.vb +++ b/Service.EDMIService/ServiceHost.vb @@ -9,15 +9,11 @@ Public Class ServiceHost(Of T) MyBase.New(GetType(T), baseAddresses) End Sub - - Public Sub EnableMetadataExchange(ByVal Optional EnableHttpGet As Boolean = True) If State = CommunicationState.Opened Then Throw New InvalidOperationException("Host is already opened") End If - - Dim oMetadataBehavior As ServiceMetadataBehavior = Description.Behaviors.Find(Of ServiceMetadataBehavior)() If oMetadataBehavior Is Nothing Then diff --git a/Service.EDMIService/WindowsService.vb b/Service.EDMIService/WindowsService.vb index 0a6d78e8..bf0c1f85 100644 --- a/Service.EDMIService/WindowsService.vb +++ b/Service.EDMIService/WindowsService.vb @@ -63,6 +63,19 @@ Public Class WindowsService _Config = _ConfigManager.Config _LogConfig.Debug = _ConfigManager.Config.Debug + UpdateTraceLogging() + + Dim oTimer As New Timers.Timer(60000) + AddHandler oTimer.Elapsed, Sub() + _Logger.Debug("Reloading config..") + _ConfigManager.Reload() + _Config = _ConfigManager.Config + _LogConfig.Debug = _ConfigManager.Config.Debug + + UpdateTraceLogging() + End Sub + oTimer.Start() + _Logger.Debug("Connecting to Databases") _Firebird = StartFirebird() @@ -119,6 +132,18 @@ Public Class WindowsService End Try End Sub + Private Sub UpdateTraceLogging() + ' Changing Tracelevels programmatically, + ' See: https://wcfpro.wordpress.com/2010/11/21/how-to-add-wcf-traces-programmatically/ + Dim oTraceLevel = SourceLevels.Off + + If _ConfigManager.Config.Debug Then + oTraceLevel = SourceLevels.Warning + End If + + WcfTracesController.Instance.LevelController(oTraceLevel) + End Sub + Private Function StartFirebird() As Firebird _Logger.Debug("Connecting to Firebird")