add loggers
This commit is contained in:
parent
92c6844810
commit
6e39488231
@ -79,13 +79,13 @@ public class DefaultRabbitMQPersistentConnection
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
_logger.LogCritical(ex, "DefaultRabbitMQPersistentConnection");
|
||||
_logger.CriticalDefaultRabbitMQPersistentConnection(ex);
|
||||
}
|
||||
}
|
||||
|
||||
public bool TryConnect()
|
||||
{
|
||||
_logger.LogInformation("RabbitMQ Client is trying to connect");
|
||||
_logger.InformationRabbitMQTryingConnect();
|
||||
|
||||
lock (sync_root)
|
||||
{
|
||||
@ -93,7 +93,7 @@ public class DefaultRabbitMQPersistentConnection
|
||||
.Or<BrokerUnreachableException>()
|
||||
.WaitAndRetry(_retryCount, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)), (ex, time) =>
|
||||
{
|
||||
_logger.LogWarning("RabbitMQ Client could not connect after {TimeOut}s ({ExceptionMessage})", $"{time.TotalSeconds:n1}", ex.Message);
|
||||
_logger.WarningRabbitMQCouldNotConnect(time.TotalSeconds, ex);
|
||||
}
|
||||
);
|
||||
|
||||
@ -109,13 +109,13 @@ public class DefaultRabbitMQPersistentConnection
|
||||
_connection.CallbackException += OnCallbackException;
|
||||
_connection.ConnectionBlocked += OnConnectionBlocked;
|
||||
|
||||
_logger.LogInformation("RabbitMQ Client acquired a persistent connection to '{HostName}' and is subscribed to failure events", _connection.Endpoint.HostName);
|
||||
_logger.InformationRabbitMQAcquiredPersistentConnection(_connection.Endpoint.HostName);
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.LogCritical("FATAL ERROR: RabbitMQ connections could not be created and opened");
|
||||
_logger.CriticalRabbitMQCouldNotBeCreated();
|
||||
|
||||
return false;
|
||||
}
|
||||
@ -129,7 +129,7 @@ public class DefaultRabbitMQPersistentConnection
|
||||
return;
|
||||
}
|
||||
|
||||
_logger.LogWarning("A RabbitMQ connection is shutdown. Trying to re-connect...");
|
||||
_logger.WarningRabbitMQConnectionShutdown();
|
||||
|
||||
TryConnect();
|
||||
}
|
||||
@ -141,7 +141,7 @@ public class DefaultRabbitMQPersistentConnection
|
||||
return;
|
||||
}
|
||||
|
||||
_logger.LogWarning("A RabbitMQ connection throw exception. Trying to re-connect...");
|
||||
_logger.WarningRabbitMQConnectionThrowException();
|
||||
|
||||
TryConnect();
|
||||
}
|
||||
@ -153,7 +153,7 @@ public class DefaultRabbitMQPersistentConnection
|
||||
return;
|
||||
}
|
||||
|
||||
_logger.LogWarning("A RabbitMQ connection is on shutdown. Trying to re-connect...");
|
||||
_logger.WarningRabbitMQConnectionIsOnShutDown();
|
||||
|
||||
TryConnect();
|
||||
}
|
||||
|
@ -105,16 +105,16 @@ public class EventBusRabbitMQ : IEventBus, IDisposable
|
||||
.Or<SocketException>()
|
||||
.WaitAndRetry(_retryCount, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)), (ex, time) =>
|
||||
{
|
||||
_logger.LogWarning(ex, string.Format("Could not publish event: {EventId} after {Timeout}s ({ExceptionMessage})", @event.Id, $"{time.TotalSeconds:n1}", ex.Message));
|
||||
_logger.WarningCouldNotPublishEvent(@event.Id, time.TotalSeconds, ex);
|
||||
});
|
||||
|
||||
var eventName = @event.GetType().Name;
|
||||
|
||||
_logger.LogTrace("Creating RabbitMQ channel to publish event: {EventId} ({EventName})", @event.Id, eventName);
|
||||
_logger.TraceCreatingRabbitMQChannel(@event.Id, eventName);
|
||||
|
||||
using (var channel = _persistentConnection.CreateModel())
|
||||
{
|
||||
_logger.LogTrace("Declaring RabbitMQ exchange to publish event: {EventId}", @event.Id);
|
||||
_logger.TraceDeclaringRabbitMQChannel(@event.Id);
|
||||
|
||||
channel.ExchangeDeclare(exchange: EXCHANGE_NAME, type: "direct");
|
||||
|
||||
@ -125,7 +125,7 @@ public class EventBusRabbitMQ : IEventBus, IDisposable
|
||||
var properties = channel.CreateBasicProperties();
|
||||
properties.DeliveryMode = 2; // persistent
|
||||
|
||||
_logger.LogTrace("Publishing event to RabbitMQ: {EventId}", @event.Id);
|
||||
_logger.TracePublishingEvent(@event.Id);
|
||||
|
||||
channel.BasicPublish(
|
||||
exchange: EXCHANGE_NAME,
|
||||
@ -140,7 +140,7 @@ public class EventBusRabbitMQ : IEventBus, IDisposable
|
||||
public void SubscribeDynamic<TH>(string eventName)
|
||||
where TH : IDynamicIntegrationEventHandler
|
||||
{
|
||||
_logger.LogInformation("Subscribing to dynamic event {EventName} with {EventHandler}", eventName, typeof(TH).GetGenericTypeName());
|
||||
_logger.InformationSubscribingDynamic(eventName, typeof(TH).GetGenericTypeName());
|
||||
|
||||
DoInternalSubscription(eventName);
|
||||
_subsManager.AddDynamicSubscription<TH>(eventName);
|
||||
@ -154,7 +154,7 @@ public class EventBusRabbitMQ : IEventBus, IDisposable
|
||||
var eventName = _subsManager.GetEventKey<T>();
|
||||
DoInternalSubscription(eventName);
|
||||
|
||||
_logger.LogInformation("Subscribing to event {EventName} with {EventHandler}", eventName, typeof(TH).GetGenericTypeName());
|
||||
_logger.InformationSubscribing(eventName, typeof(TH).GetGenericTypeName());
|
||||
|
||||
_subsManager.AddSubscription<T, TH>();
|
||||
StartBasicConsume();
|
||||
@ -209,13 +209,13 @@ public class EventBusRabbitMQ : IEventBus, IDisposable
|
||||
|
||||
private void StartBasicConsume()
|
||||
{
|
||||
_logger.LogTrace("Starting RabbitMQ basic consume");
|
||||
_logger.TraceStartingBasicConsume();
|
||||
|
||||
if (_consumerChannel != null)
|
||||
{
|
||||
if (!String.IsNullOrEmpty(_consumerTag))
|
||||
{
|
||||
_logger.LogTrace("Consumer tag {ConsumerTag} already exist. Cancelled BasicConsume again", _consumerTag);
|
||||
_logger.TraceConsumerTagExist(_consumerTag);
|
||||
|
||||
return;
|
||||
}
|
||||
@ -231,7 +231,7 @@ public class EventBusRabbitMQ : IEventBus, IDisposable
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.LogError("StartBasicConsume can't call on _consumerChannel == null");
|
||||
_logger.ErrorStartBasicConsumeCantCall();
|
||||
}
|
||||
}
|
||||
|
||||
@ -255,7 +255,7 @@ public class EventBusRabbitMQ : IEventBus, IDisposable
|
||||
}
|
||||
catch (IntegrationEventRejectExeption ex)
|
||||
{
|
||||
_logger.LogWarning(ex, string.Format("----- ERROR Processing message \"{0}\"", message));
|
||||
_logger.WarningProcessingMessage(message, ex);
|
||||
|
||||
if (eventArgs.Redelivered)
|
||||
{
|
||||
@ -275,8 +275,8 @@ public class EventBusRabbitMQ : IEventBus, IDisposable
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogWarning(ex, string.Format("----- ERROR Processing message \"{0}\"", message));
|
||||
{
|
||||
_logger.WarningProcessingMessage(message, ex);
|
||||
|
||||
_consumerChannel.BasicAck(eventArgs.DeliveryTag, multiple: false);
|
||||
}
|
||||
@ -289,7 +289,7 @@ public class EventBusRabbitMQ : IEventBus, IDisposable
|
||||
_persistentConnection.TryConnect();
|
||||
}
|
||||
|
||||
_logger.LogTrace("Creating RabbitMQ consumer channel");
|
||||
_logger.TraceCreatingConsumerChannel();
|
||||
|
||||
var channel = _persistentConnection.CreateModel();
|
||||
|
||||
@ -318,7 +318,7 @@ public class EventBusRabbitMQ : IEventBus, IDisposable
|
||||
|
||||
channel.CallbackException += (sender, ea) =>
|
||||
{
|
||||
_logger.LogWarning(ea.Exception, "Recreating RabbitMQ consumer channel");
|
||||
_logger.WarningRecreatingConsumerChannel(ea.Exception);
|
||||
|
||||
_consumerChannel.Dispose();
|
||||
_consumerChannel = CreateConsumerChannel();
|
||||
@ -354,7 +354,7 @@ public class EventBusRabbitMQ : IEventBus, IDisposable
|
||||
|
||||
private async Task ProcessEvent(string eventName, IntegrationEvent @event)
|
||||
{
|
||||
_logger.LogTrace("Processing RabbitMQ event: {EventName}", eventName);
|
||||
_logger.TraceProcessingEvent(eventName);
|
||||
|
||||
PreProcessEvent(@event);
|
||||
|
||||
@ -397,7 +397,7 @@ public class EventBusRabbitMQ : IEventBus, IDisposable
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.LogWarning("No subscription for RabbitMQ event: {EventName}", eventName);
|
||||
_logger.WarningNoSubscription(eventName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ global using System.Net.Sockets;
|
||||
global using ASC.EventBus.Abstractions;
|
||||
global using ASC.EventBus.Events;
|
||||
global using ASC.EventBus.Extensions;
|
||||
global using ASC.EventBus.RabbitMQ.Log;
|
||||
|
||||
global using Autofac;
|
||||
|
||||
@ -36,6 +37,6 @@ global using Microsoft.Extensions.Logging;
|
||||
|
||||
global using Polly;
|
||||
|
||||
global using RabbitMQ.Client;
|
||||
global using RabbitMQ.Client;
|
||||
global using RabbitMQ.Client.Events;
|
||||
global using RabbitMQ.Client.Exceptions;
|
||||
|
@ -0,0 +1,53 @@
|
||||
// (c) Copyright Ascensio System SIA 2010-2022
|
||||
//
|
||||
// This program is a free software product.
|
||||
// You can redistribute it and/or modify it under the terms
|
||||
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
|
||||
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
|
||||
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
|
||||
// any third-party rights.
|
||||
//
|
||||
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
|
||||
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
|
||||
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
//
|
||||
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
|
||||
//
|
||||
// The interactive user interfaces in modified source and object code versions of the Program must
|
||||
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
|
||||
//
|
||||
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
|
||||
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
|
||||
// trademark law for use of our trademarks.
|
||||
//
|
||||
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
|
||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
|
||||
namespace ASC.EventBus.RabbitMQ.Log;
|
||||
internal static partial class DefaultRabbitMQPersistentConnectionLogger
|
||||
{
|
||||
[LoggerMessage(Level = LogLevel.Critical, Message = "DefaultRabbitMQPersistentConnection")]
|
||||
public static partial void CriticalDefaultRabbitMQPersistentConnection(this ILogger logger, Exception exception);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Information, Message = "RabbitMQ Client is trying to connect")]
|
||||
public static partial void InformationRabbitMQTryingConnect(this ILogger logger);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Warning, Message = "RabbitMQ Client could not connect after {timeOut}s")]
|
||||
public static partial void WarningRabbitMQCouldNotConnect(this ILogger logger, double timeOut, Exception exception);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Information, Message = "RabbitMQ Client acquired a persistent connection to '{hostName}' and is subscribed to failure events")]
|
||||
public static partial void InformationRabbitMQAcquiredPersistentConnection(this ILogger logger, string hostName);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Critical, Message = "FATAL ERROR: RabbitMQ connections could not be created and opened")]
|
||||
public static partial void CriticalRabbitMQCouldNotBeCreated(this ILogger logger);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Warning, Message = "A RabbitMQ connection is shutdown. Trying to re-connect...")]
|
||||
public static partial void WarningRabbitMQConnectionShutdown(this ILogger logger);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Warning, Message = "A RabbitMQ connection throw exception. Trying to re-connect...")]
|
||||
public static partial void WarningRabbitMQConnectionThrowException(this ILogger logger);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Warning, Message = "A RabbitMQ connection is on shutdown. Trying to re-connect...")]
|
||||
public static partial void WarningRabbitMQConnectionIsOnShutDown(this ILogger logger);
|
||||
}
|
74
common/ASC.EventBus.RabbitMQ/Log/EventBusRabbitMQLogger.cs
Normal file
74
common/ASC.EventBus.RabbitMQ/Log/EventBusRabbitMQLogger.cs
Normal file
@ -0,0 +1,74 @@
|
||||
// (c) Copyright Ascensio System SIA 2010-2022
|
||||
//
|
||||
// This program is a free software product.
|
||||
// You can redistribute it and/or modify it under the terms
|
||||
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
|
||||
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
|
||||
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
|
||||
// any third-party rights.
|
||||
//
|
||||
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
|
||||
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
|
||||
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
//
|
||||
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
|
||||
//
|
||||
// The interactive user interfaces in modified source and object code versions of the Program must
|
||||
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
|
||||
//
|
||||
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
|
||||
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
|
||||
// trademark law for use of our trademarks.
|
||||
//
|
||||
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
|
||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
|
||||
namespace ASC.EventBus.RabbitMQ.Log;
|
||||
internal static partial class EventBusRabbitMQLogger
|
||||
{
|
||||
[LoggerMessage(Level = LogLevel.Warning, Message = "Could not publish event: {eventId} after {timeout}s")]
|
||||
public static partial void WarningCouldNotPublishEvent(this ILogger logger, Guid eventId, double timeout, Exception exception);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Trace, Message = "Creating RabbitMQ channel to publish event: {eventId} ({eventName})")]
|
||||
public static partial void TraceCreatingRabbitMQChannel(this ILogger logger, Guid eventId, string eventName);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Trace, Message = "Declaring RabbitMQ exchange to publish event: {eventId}")]
|
||||
public static partial void TraceDeclaringRabbitMQChannel(this ILogger logger, Guid eventId);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Trace, Message = "Publishing event to RabbitMQ: {eventId}")]
|
||||
public static partial void TracePublishingEvent(this ILogger logger, Guid eventId);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Information, Message = "Subscribing to dynamic event {eventName} with {eventHandler}")]
|
||||
public static partial void InformationSubscribingDynamic(this ILogger logger, string eventName, string eventHandler);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Information, Message = "Subscribing to event {eventName} with {eventHandler}")]
|
||||
public static partial void InformationSubscribing(this ILogger logger, string eventName, string eventHandler);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Information, Message = "Unsubscribing from event {eventName}")]
|
||||
public static partial void InformationUnsubscribing(this ILogger logger, string eventName);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Trace, Message = "Starting RabbitMQ basic consume")]
|
||||
public static partial void TraceStartingBasicConsume(this ILogger logger);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Trace, Message = "Consumer tag {consumerTag} already exist. Cancelled BasicConsume again")]
|
||||
public static partial void TraceConsumerTagExist(this ILogger logger, string consumerTag);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Error, Message = "StartBasicConsume can't call on _consumerChannel == null")]
|
||||
public static partial void ErrorStartBasicConsumeCantCall(this ILogger logger);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Warning, Message = "----- ERROR Processing message \"{message}\"")]
|
||||
public static partial void WarningProcessingMessage(this ILogger logger, string message, Exception exception);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Trace, Message = "Creating RabbitMQ consumer channel")]
|
||||
public static partial void TraceCreatingConsumerChannel(this ILogger logger);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Warning, Message = "Recreating RabbitMQ consumer channel")]
|
||||
public static partial void WarningRecreatingConsumerChannel(this ILogger logger, Exception exception);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Trace, Message = "Processing RabbitMQ event: {eventName}")]
|
||||
public static partial void TraceProcessingEvent(this ILogger logger, string eventName);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Warning, Message = "No subscription for RabbitMQ event: {eventName}")]
|
||||
public static partial void WarningNoSubscription(this ILogger logger, string eventName);
|
||||
}
|
Loading…
Reference in New Issue
Block a user