EDMIService: Reload Config every 5 mins and change tracelogging/debug logging based on debug option in config
This commit is contained in:
parent
2cbafff539
commit
33d3af4de8
@ -4,7 +4,10 @@
|
||||
</configSections>
|
||||
<system.diagnostics>
|
||||
<sources>
|
||||
<source name="System.ServiceModel" switchValue="Information,ActivityTracing" propagateActivity="true">
|
||||
<source name="System.ServiceModel"
|
||||
switchValue="Warning"
|
||||
switchType="DigitalData.Services.EDMIService.TraceSwitch, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
|
||||
propagateActivity="true">
|
||||
<listeners>
|
||||
<add name="xml" />
|
||||
</listeners>
|
||||
|
||||
@ -133,6 +133,7 @@
|
||||
<Compile Include="Helpers\Exceptions.vb" />
|
||||
<Compile Include="Helpers\DatabaseResult.vb" />
|
||||
<Compile Include="EDMIService.vb" />
|
||||
<Compile Include="Helpers\TraceSwitch.vb" />
|
||||
<Compile Include="Scheduler\Scheduler.vb" />
|
||||
<Compile Include="Scheduler\DatatableJob.vb" />
|
||||
<Compile Include="Scheduler\JobListener.vb" />
|
||||
|
||||
34
Service.EDMIService/Helpers/TraceSwitch.vb
Normal file
34
Service.EDMIService/Helpers/TraceSwitch.vb
Normal file
@ -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
|
||||
@ -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
|
||||
|
||||
@ -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")
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user