Ver código fonte

Logging context of log readers

Source commit: 13d1152c346e30f846c85a0529ee0432395e8de7
Martin Prikryl 8 anos atrás
pai
commit
7ba0a66453

+ 7 - 1
dotnet/internal/Callstack.cs

@@ -7,11 +7,12 @@ namespace WinSCP
 {
     internal class Callstack : IDisposable
     {
-        public Callstack(Logger logger)
+        public Callstack(Logger logger, object token = null)
         {
             _logger = logger;
             if (_logger.Logging)
             {
+                _token = token;
                 Type type = GetType();
                 StackTrace stackTrace = new StackTrace();
                 int i = 0;
@@ -36,6 +37,10 @@ namespace WinSCP
                 if (method != null)
                 {
                     _name = string.Format(CultureInfo.InvariantCulture, "{0}.{1}", method.DeclaringType.Name, method.Name);
+                    if (_token != null)
+                    {
+                        _name += string.Format(CultureInfo.InvariantCulture, "({0})", _token);
+                    }
                     _logger.WriteLine("{0} entering", _name);
                     _logger.Indent();
                 }
@@ -53,5 +58,6 @@ namespace WinSCP
 
         private readonly Logger _logger;
         private readonly string _name;
+        private readonly object _token;
     }
 }

+ 2 - 2
dotnet/internal/CallstackAndLock.cs

@@ -2,8 +2,8 @@
 {
     internal class CallstackAndLock : Callstack
     {
-        public CallstackAndLock(Logger logger, Lock alock) :
-            base(logger)
+        public CallstackAndLock(Logger logger, Lock alock, object token = null) :
+            base(logger, token)
         {
             _lock = alock;
             _lock.Enter();

+ 4 - 2
dotnet/internal/ElementLogReader.cs

@@ -18,12 +18,13 @@ namespace WinSCP
 
             _localName = _parentReader.Reader.LocalName;
             _depth = _parentReader.Reader.Depth;
+            _token = _localName + "@" + _depth;
             _read = false;
         }
 
         public override void Dispose()
         {
-            using (Session.Logger.CreateCallstack())
+            using (Session.Logger.CreateCallstack(_token))
             {
                 try
                 {
@@ -61,7 +62,7 @@ namespace WinSCP
 
         public void ReadToEnd(LogReadFlags flags)
         {
-            using (Session.Logger.CreateCallstack())
+            using (Session.Logger.CreateCallstack(_token))
             {
                 if (!_read)
                 {
@@ -81,5 +82,6 @@ namespace WinSCP
         private readonly string _localName;
         private readonly int _depth;
         protected bool _read;
+        private string _token;
     }
 }

+ 2 - 2
dotnet/internal/Logger.cs

@@ -229,9 +229,9 @@ namespace WinSCP
             }
         }
 
-        public Callstack CreateCallstack()
+        public Callstack CreateCallstack(object token = null)
         {
-            return new Callstack(this);
+            return new Callstack(this, token);
         }
 
         public Callstack CreateCallstackAndLock()