annotate Implab/Diagnostics/TextFileListener.cs @ 196:40d7fed4a09e

fixed promise chaining behavior, the error handler doesn't handle result or cancellation handlers exceptions these exceptions are propagated to the next handlers.
author cin
date Mon, 29 Aug 2016 23:15:51 +0300
parents 04d4c92d0f28
children d45bdf510514
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
40
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
1 using System;
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
2 using System.IO;
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
3 using System.Text;
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
4
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
5 namespace Implab.Diagnostics {
134
04d4c92d0f28 Improved logging
cin
parents: 92
diff changeset
6 public class TextFileListener: ListenerBase {
40
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
7 readonly TextWriter m_textWriter;
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
8
134
04d4c92d0f28 Improved logging
cin
parents: 92
diff changeset
9 public TextFileListener(string fileName) {
40
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
10 m_textWriter = File.CreateText(fileName);
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
11
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
12 m_textWriter.WriteLine("LOG {0}", DateTime.Now);
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
13 }
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
14
134
04d4c92d0f28 Improved logging
cin
parents: 92
diff changeset
15 #region implemented abstract members of ListenerBase
04d4c92d0f28 Improved logging
cin
parents: 92
diff changeset
16
04d4c92d0f28 Improved logging
cin
parents: 92
diff changeset
17 public override void Write(LogEventArgs args, object entry) {
40
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
18 var msg = new StringBuilder();
134
04d4c92d0f28 Improved logging
cin
parents: 92
diff changeset
19 for (int i = 0; i < args.Operation.Level; i++)
40
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
20 msg.Append(" ");
134
04d4c92d0f28 Improved logging
cin
parents: 92
diff changeset
21 msg.AppendFormat("[{0}]:{1}: {2}", args.ThreadId, args.ChannelName, entry);
40
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
22
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
23 lock (m_textWriter) {
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
24 if (!IsDisposed) {
47
b181f7bcb259 refactoring, interactive tarce log almost complete
cin
parents: 44
diff changeset
25 // тут гарантировано еще не освобожден m_textWriter
92
4c0e5ef99986 rewritten tracing
cin
parents: 48
diff changeset
26 m_textWriter.WriteLine(msg);
40
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
27 m_textWriter.Flush();
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
28 }
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
29 }
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
30 }
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
31
134
04d4c92d0f28 Improved logging
cin
parents: 92
diff changeset
32 #endregion
04d4c92d0f28 Improved logging
cin
parents: 92
diff changeset
33
40
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
34 protected override void Dispose(bool disposing) {
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
35 base.Dispose(disposing);
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
36 if (disposing) {
47
b181f7bcb259 refactoring, interactive tarce log almost complete
cin
parents: 44
diff changeset
37 // IsDisposed = true
40
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
38 lock (m_textWriter) {
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
39 Safe.Dispose(m_textWriter);
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
40 }
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
41 }
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
42 }
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
43
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
44
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
45 }
fe33f4e02ad5 improved tracing
cin
parents:
diff changeset
46 }