This commit is contained in:
jsaey
2024-04-25 10:39:55 +02:00
parent 25b959f75a
commit 44468ae920
2 changed files with 16 additions and 4 deletions

View File

@@ -12,7 +12,7 @@ namespace EonaCat.Logger.EonaCatCoreLogger.Internal
// This file is part of the EonaCat project(s) which is released under the Apache License. // This file is part of the EonaCat project(s) which is released under the Apache License.
// See the LICENSE file or go to https://EonaCat.com/License for full license details. // See the LICENSE file or go to https://EonaCat.com/License for full license details.
public abstract class BatchingLoggerProvider : ILoggerProvider public abstract class BatchingLoggerProvider : ILoggerProvider, IDisposable
{ {
protected DateTimeOffset CurrentDateTimeOffset => UseLocalTime ? DateTimeOffset.Now : DateTimeOffset.UtcNow; protected DateTimeOffset CurrentDateTimeOffset => UseLocalTime ? DateTimeOffset.Now : DateTimeOffset.UtcNow;
protected DateTime CurrentDateTme => UseLocalTime ? DateTime.Now : DateTime.UtcNow; protected DateTime CurrentDateTme => UseLocalTime ? DateTime.Now : DateTime.UtcNow;
@@ -144,9 +144,13 @@ namespace EonaCat.Logger.EonaCatCoreLogger.Internal
public void Dispose() public void Dispose()
{ {
#pragma warning disable CS4014 while (!_messageQueue.IsEmpty)
StopAsync(); {
#pragma warning restore CS4014 _messageQueue.TryDequeue(out _);
}
StopAsync().GetAwaiter().GetResult();
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }

View File

@@ -84,6 +84,10 @@ namespace EonaCat.Logger.Managers
private void CreateLogger() private void CreateLogger()
{ {
// Dispose of previous ServiceProvider if it exists
(LoggerProvider as IDisposable)?.Dispose();
(LoggerFactory as IDisposable)?.Dispose();
IServiceCollection serviceCollection = new ServiceCollection(); IServiceCollection serviceCollection = new ServiceCollection();
serviceCollection.AddLogging(builder => builder.SetMinimumLevel(Settings.MaxLogType.ToLogLevel()).AddEonaCatFileLogger(configuration => serviceCollection.AddLogging(builder => builder.SetMinimumLevel(Settings.MaxLogType.ToLogLevel()).AddEonaCatFileLogger(configuration =>
{ {
@@ -104,8 +108,12 @@ namespace EonaCat.Logger.Managers
LoggerProvider = serviceProvider.GetService<ILoggerProvider>(); LoggerProvider = serviceProvider.GetService<ILoggerProvider>();
LoggerFactory = serviceProvider.GetService<ILoggerFactory>(); LoggerFactory = serviceProvider.GetService<ILoggerFactory>();
Logger = LoggerFactory.CreateLogger(Settings.Id); Logger = LoggerFactory.CreateLogger(Settings.Id);
// Dispose of the current ServiceProvider
(serviceProvider as IDisposable)?.Dispose();
} }
private async Task InternalWriteAsync(DateTime dateTime, string message, ELogType logType = ELogType.INFO, bool? writeToConsole = null, bool? sendToSyslogServers = null, bool? sendToSplunkServers = null, string customSplunkSourceType = null, bool? sendToGrayLogServers = null, string grayLogFacility = null, string grayLogSource = null, string grayLogVersion = "1.1") private async Task InternalWriteAsync(DateTime dateTime, string message, ELogType logType = ELogType.INFO, bool? writeToConsole = null, bool? sendToSyslogServers = null, bool? sendToSplunkServers = null, string customSplunkSourceType = null, bool? sendToGrayLogServers = null, string grayLogFacility = null, string grayLogSource = null, string grayLogVersion = "1.1")
{ {
if (string.IsNullOrEmpty(message) || logType == ELogType.NONE || (int)logType >= (int)Settings.MaxLogType) if (string.IsNullOrEmpty(message) || logType == ELogType.NONE || (int)logType >= (int)Settings.MaxLogType)