diff Implab/Diagnostics/TextFileListener.cs @ 40:fe33f4e02ad5

improved tracing added text listeners (file,console)
author cin
date Tue, 15 Apr 2014 17:52:09 +0400
parents
children 7c2369f580b8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Implab/Diagnostics/TextFileListener.cs	Tue Apr 15 17:52:09 2014 +0400
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+
+namespace Implab.Diagnostics {
+    public class TextFileListener: TextListenerBase {
+        readonly TextWriter m_textWriter;
+
+        public TextFileListener(string fileName) {
+            m_textWriter = File.CreateText(fileName);
+
+            m_textWriter.WriteLine("LOG {0}", DateTime.Now);
+            Register(this);
+        }
+
+        protected override void WriteEntry(TraceContext context, EventText text) {
+            var msg = new StringBuilder();
+            for (int i = 0; i < text.indent; i++)
+                msg.Append("  ");
+            msg.AppendFormat("[{0}]: {1}", context.ThreadId, text.content);
+
+            lock (m_textWriter) {
+                if (!IsDisposed) {
+                    m_textWriter.WriteLine(msg.ToString());
+                    m_textWriter.Flush();
+                }
+            }
+        }
+
+        
+        protected override void Dispose(bool disposing) {
+            base.Dispose(disposing);
+            if (disposing) {
+                lock (m_textWriter) {
+                    Safe.Dispose(m_textWriter);
+                }
+            }
+        }
+
+        
+    }
+}