Mercurial > pub > ImplabNet
comparison Implab/Diagnostics/TextFileListener.cs @ 205:8200ab154c8a v2
Added ResetState to RunnableComponent to reset in case of failure
Added StateChanged event to IRunnable
Renamed Promise.SUCCESS -> Promise.Success
Added Promise.FromException
Renamed Bundle -> PromiseAll in PromiseExtensions
author | cin |
---|---|
date | Tue, 25 Oct 2016 17:40:33 +0300 |
parents | d45bdf510514 |
children | 6efb77590b15 |
comparison
equal
deleted
inserted
replaced
203:4d9830a9bbb8 | 205:8200ab154c8a |
---|---|
3 using System.Text; | 3 using System.Text; |
4 | 4 |
5 namespace Implab.Diagnostics { | 5 namespace Implab.Diagnostics { |
6 public class TextFileListener: ListenerBase { | 6 public class TextFileListener: ListenerBase { |
7 readonly TextWriter m_textWriter; | 7 readonly TextWriter m_textWriter; |
8 readonly object m_lock = new object(); | |
8 | 9 |
9 public TextFileListener(string fileName) { | 10 public TextFileListener(string fileName) { |
10 m_textWriter = File.CreateText(fileName); | 11 m_textWriter = File.CreateText(fileName); |
11 | 12 |
12 m_textWriter.WriteLine("LOG {0}", DateTime.Now); | 13 m_textWriter.WriteLine("LOG {0}", DateTime.Now); |
18 var msg = new StringBuilder(); | 19 var msg = new StringBuilder(); |
19 for (int i = 0; i < args.Operation.Level; i++) | 20 for (int i = 0; i < args.Operation.Level; i++) |
20 msg.Append(" "); | 21 msg.Append(" "); |
21 msg.AppendFormat("[{0}]:{1}: {2}", args.ThreadId, args.Channel, entry); | 22 msg.AppendFormat("[{0}]:{1}: {2}", args.ThreadId, args.Channel, entry); |
22 | 23 |
23 lock (m_textWriter) { | 24 lock (m_lock) { |
24 if (!IsDisposed) { | 25 if (!IsDisposed) { |
25 // тут гарантировано еще не освобожден m_textWriter | 26 // тут гарантировано еще не освобожден m_textWriter |
26 m_textWriter.WriteLine(msg); | 27 m_textWriter.WriteLine(msg); |
27 m_textWriter.Flush(); | 28 m_textWriter.Flush(); |
28 } | 29 } |
33 | 34 |
34 protected override void Dispose(bool disposing) { | 35 protected override void Dispose(bool disposing) { |
35 base.Dispose(disposing); | 36 base.Dispose(disposing); |
36 if (disposing) { | 37 if (disposing) { |
37 // IsDisposed = true | 38 // IsDisposed = true |
38 lock (m_textWriter) { | 39 lock (m_lock) { |
39 Safe.Dispose(m_textWriter); | 40 Safe.Dispose(m_textWriter); |
40 } | 41 } |
41 } | 42 } |
42 } | 43 } |
43 | 44 |