diff Implab/Diagnostics/TextListenerBase.cs @ 92:4c0e5ef99986 v2

rewritten tracing
author cin
date Wed, 22 Oct 2014 18:37:56 +0400
parents d9d794b61bb9
children
line wrap: on
line diff
--- a/Implab/Diagnostics/TextListenerBase.cs	Tue Oct 14 09:30:45 2014 +0400
+++ b/Implab/Diagnostics/TextListenerBase.cs	Wed Oct 22 18:37:56 2014 +0400
@@ -13,7 +13,7 @@
         protected TextListenerBase(bool global) {
             Register(this);
             if (!global) {
-                m_boundOperation = TraceContext.Current.CurrentOperation;
+                m_boundOperation = TraceContext.Instance.CurrentOperation;
                 m_baseIndent = Math.Max(0, m_boundOperation.Level - 1);
             }
         }
@@ -38,13 +38,12 @@
                 var formatter = GetService<IEventTextFormatter<TEvent>>();
                 var channelName = channel.Name;
 
-                EventHandler<ValueEventArgs<TEvent>> handler = (sender, args) => {
-                    TraceContext context = (TraceContext)sender;
-                    var text = formatter.Format(context, args.Value);
+                EventHandler<LogEventArgs<TEvent>> handler = (sender, args) => {
+                    var text = formatter.Format(args, args.Value);
                     text.indent -= m_baseIndent;
 
-                    if (IsRelated(context.CurrentOperation))
-                        WriteEntry(context, text, channelName);
+                    if (IsRelated(args.Operation))
+                        WriteEntry(args, text, channelName);
                 };
 
                 if (m_subscriptions.ContainsKey(channel))
@@ -97,19 +96,19 @@
         /// Данный метод может вызваться из разных потоков одновременно. Возможна ситуация, когда
         /// данный метод вызывается уже после освобождения ообъекта методом <see cref="Dispose()"/>.
         /// </remarks>
-        /// <param name="context">Контекст трассировки.</param>
         /// <param name="text">Текст сообщения.</param>
-        protected abstract void WriteEntry(TraceContext context, EventText text, string channel);
+        /// <param name = "channel"></param>
+        protected abstract void WriteEntry(LogEventArgs args, EventText text, string channel);
         
-        public EventText Format(TraceContext context, object data) {
+        public EventText Format(LogEventArgs args, object data) {
             return new EventText {
-                indent = context.CurrentOperation.Level,
+                indent = args.Operation.Level,
                 content = data.ToString()
             };
         }
 
-        public EventText Format(TraceContext context, TraceEvent data) {
-            var level = context.CurrentOperation.Level;
+        public EventText Format(LogEventArgs args, TraceEvent data) {
+            var level = args.Operation.Level;
             if (data.EventType == TraceEventType.OperationCompleted || data.EventType == TraceEventType.OperationStarted)
                 level--;