TextFileListener.cs
        
        
            
                    45 lines
            
             | 1.4 KiB
            
                | text/x-csharp
            
             |
                CSharpLexer
            
          
        | 
              
  
   | 
            
            r40 | using System; | ||
| using System.IO; | ||||
| using System.Text; | ||||
| namespace Implab.Diagnostics { | ||||
| public class TextFileListener: TextListenerBase { | ||||
| readonly TextWriter m_textWriter; | ||||
| 
              
  
   | 
            
            r48 | public TextFileListener(string fileName, bool global) | ||
| : base(global) { | ||||
| 
              
  
   | 
            
            r40 | m_textWriter = File.CreateText(fileName); | ||
| m_textWriter.WriteLine("LOG {0}", DateTime.Now); | ||||
| Register(this); | ||||
| } | ||||
| 
              
  
   | 
            
            r92 | protected override void WriteEntry(LogEventArgs args, EventText text, string channel) { | ||
| 
              
  
   | 
            
            r40 | var msg = new StringBuilder(); | ||
| for (int i = 0; i < text.indent; i++) | ||||
| msg.Append(" "); | ||||
| 
              
  
   | 
            
            r92 | msg.AppendFormat("[{0}]:{1}: {2}", args.ThreadId, channel, text.content); | ||
| 
              
  
   | 
            
            r40 | |||
| lock (m_textWriter) { | ||||
| if (!IsDisposed) { | ||||
| 
              
  
   | 
            
            r47 | // тут гарантировано еще не освобожден m_textWriter | ||
| 
              
  
   | 
            
            r92 | m_textWriter.WriteLine(msg); | ||
| 
              
  
   | 
            
            r40 | m_textWriter.Flush(); | ||
| } | ||||
| } | ||||
| } | ||||
| protected override void Dispose(bool disposing) { | ||||
| base.Dispose(disposing); | ||||
| if (disposing) { | ||||
| 
              
  
   | 
            
            r47 | // IsDisposed = true | ||
| 
              
  
   | 
            
            r40 | lock (m_textWriter) { | ||
| Safe.Dispose(m_textWriter); | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
