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 |
