1
0
Эх сурвалжийг харах

MessageExecutionCompleted is no longer logged when the source message is not logged

Olivier Coanet 11 жил өмнө
parent
commit
7b01a45031

+ 1 - 1
src/Abc.Zebus.Tests/log4net.config

@@ -2,7 +2,7 @@
 <log4net>
 
   <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
-    <file value="logs/Abc.MyService.Host.log" />
+    <file value="logs/Abc.Testing.log" />
     <appendToFile value="true" />
     <rollingStyle value="Date" />
     <datePattern value=".yyyyMMdd" />

+ 13 - 8
src/Abc.Zebus/Core/Bus.cs

@@ -144,7 +144,7 @@ namespace Abc.Zebus.Core
                 HandleLocalMessage(message, null);
 
             var targetPeers = localDispatchEnabled ? peersHandlingMessage.Where(x => x.Id != _peerId).ToList() : peersHandlingMessage;
-            SendTransportMessage(null, message, targetPeers);
+            SendTransportMessage(null, message, targetPeers, true);
         }
 
         public Task<CommandResult> Send(ICommand message)
@@ -182,7 +182,7 @@ namespace Abc.Zebus.Core
             {
                 var messageId = MessageId.NextId();
                 _messageIdToTaskCompletionSources.TryAdd(messageId, taskCompletionSource);
-                SendTransportMessage(messageId, message, peer);
+                SendTransportMessage(messageId, message, peer, true);
             }
 
             return taskCompletionSource.Task;
@@ -359,7 +359,8 @@ namespace Abc.Zebus.Core
                 if (dispatch.Message is ICommand)
                 {
                     var messageExecutionCompleted = MessageExecutionCompleted.Create(dispatch.Context, dispatchResult, _serializer);
-                    SendTransportMessage(null, messageExecutionCompleted, dispatch.Context.GetSender());
+                    var shouldLogMessageExecutionCompleted = _messageLogger.IsLogEnabled(dispatch.Message);
+                    SendTransportMessage(null, messageExecutionCompleted, dispatch.Context.GetSender(), shouldLogMessageExecutionCompleted);
                 }
 
                 AckTransportMessage(transportMessage);
@@ -437,21 +438,25 @@ namespace Abc.Zebus.Core
             };
         }
 
-        private void SendTransportMessage(MessageId? messageId, IMessage message, Peer peer)
+        private void SendTransportMessage(MessageId? messageId, IMessage message, Peer peer, bool logEnabled)
         {
-            SendTransportMessage(messageId, message, new[] { peer });
+            SendTransportMessage(messageId, message, new[] { peer }, logEnabled);
         }
 
-        private void SendTransportMessage(MessageId? messageId, IMessage message, IList<Peer> peers)
+        private void SendTransportMessage(MessageId? messageId, IMessage message, IList<Peer> peers, bool logEnabled)
         {
             if (peers.Count == 0)
             {
-                _messageLogger.LogFormat("SEND: {0} with no target peer", message);
+                if (logEnabled)
+                    _messageLogger.LogFormat("SEND: {0} with no target peer", message);
+
                 return;
             }
 
             var transportMessage = ToTransportMessage(message, messageId ?? MessageId.NextId());
-            _messageLogger.LogFormat("SEND: {0} to {3} ({2} bytes) [{1}]", message, transportMessage.Id, transportMessage.MessageBytes.Length, peers);
+
+            if (logEnabled)
+                _messageLogger.LogFormat("SEND: {0} to {3} ({2} bytes) [{1}]", message, transportMessage.Id, transportMessage.MessageBytes.Length, peers);
 
             SendTransportMessage(transportMessage, peers);
         }

+ 6 - 0
src/Abc.Zebus/Core/BusMessageLogger.cs

@@ -13,6 +13,12 @@ namespace Abc.Zebus.Core
         private readonly ConcurrentDictionary<Type, MessageTypeLogInfo> _logInfos = new ConcurrentDictionary<Type, MessageTypeLogInfo>();
         private readonly ILog _logger = LogManager.GetLogger(typeof(Bus));
 
+        public bool IsLogEnabled(IMessage message)
+        {
+            var logInfo = _logInfos.GetOrAdd(message.GetType(), CreateLogger);
+            return logInfo.Logger.IsInfoEnabled;
+        }
+
         [StringFormatMethod("format")]
         public void LogFormat(string format, IMessage message, MessageId? messageId = null, int messageSize = 0, PeerId peerId = default(PeerId))
         {