2 using System.Collections.Generic;
5 using System.Diagnostics;
9 public class CTraceLogListener : TraceListener
11 public CTraceLogListener( StreamWriter stream )
13 this.streamWriter = stream;
16 public override void Flush()
18 if( this.streamWriter != null )
22 this.streamWriter.Flush();
24 catch( ObjectDisposedException )
29 public override void TraceEvent( TraceEventCache eventCache, string source, TraceEventType eventType, int id, string message )
31 if( this.streamWriter != null )
35 this.tイベント種別を出力する( eventType );
37 this.streamWriter.WriteLine( message );
39 catch( ObjectDisposedException )
44 public override void TraceEvent( TraceEventCache eventCache, string source, TraceEventType eventType, int id, string format, params object[] args )
46 if( this.streamWriter != null )
50 this.tイベント種別を出力する( eventType );
52 this.streamWriter.WriteLine( string.Format( format, args ) );
54 catch( ObjectDisposedException )
59 public override void Write( string message )
61 if( this.streamWriter != null )
65 this.streamWriter.Write( message );
67 catch( ObjectDisposedException )
72 public override void WriteLine( string message )
74 if( this.streamWriter != null )
78 this.streamWriter.WriteLine( message );
80 catch( ObjectDisposedException )
86 protected override void Dispose( bool disposing )
88 if( this.streamWriter != null )
92 this.streamWriter.Close();
97 this.streamWriter = null;
99 base.Dispose( disposing );
104 private StreamWriter streamWriter;
106 private void tイベント種別を出力する( TraceEventType eventType )
108 if( this.streamWriter != null )
112 var now = DateTime.Now;
113 this.streamWriter.Write( string.Format( "{0:D4}/{1:D2}/{2:D2} {3:D2}:{4:D2}:{5:D2}.{6:D3} ", new object[] { now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second, now.Millisecond } ) );
116 case TraceEventType.Error:
117 this.streamWriter.Write( "[ERROR] " );
120 case ( TraceEventType.Error | TraceEventType.Critical ):
123 case TraceEventType.Warning:
124 this.streamWriter.Write( "[WARNING] " );
127 case TraceEventType.Information:
133 this.streamWriter.Write( "[INFO] " );
135 catch( ObjectDisposedException )
140 private void tインデントを出力する()
142 if( ( this.streamWriter != null ) && ( base.IndentLevel > 0 ) )
146 for( int i = 0; i < base.IndentLevel; i++ )
147 this.streamWriter.Write( " " );
149 catch( ObjectDisposedException )