3
3
4
4
using System ;
5
5
using System . IO ;
6
+ using System . Xml ;
6
7
7
8
namespace Microsoft . SignCheck . Logging
8
9
{
@@ -20,13 +21,19 @@ internal StreamWriter MessageWriter
20
21
set ;
21
22
}
22
23
24
+ internal XmlWriter ResultsWriter
25
+ {
26
+ get ;
27
+ set ;
28
+ }
29
+
23
30
internal long Lines
24
31
{
25
32
get ;
26
33
set ;
27
34
}
28
35
29
- public FileLogger ( LogVerbosity verbosity , string messageFile , string errorFile ) : base ( verbosity )
36
+ public FileLogger ( LogVerbosity verbosity , string messageFile , string errorFile , string resultsFile ) : base ( verbosity )
30
37
{
31
38
if ( ! String . IsNullOrEmpty ( messageFile ) )
32
39
{
@@ -47,6 +54,22 @@ public FileLogger(LogVerbosity verbosity, string messageFile, string errorFile)
47
54
ErrorWriter . AutoFlush = true ;
48
55
}
49
56
57
+ if ( ! String . IsNullOrEmpty ( resultsFile ) )
58
+ {
59
+ if ( ! Directory . Exists ( resultsFile ) )
60
+ {
61
+ Directory . CreateDirectory ( Path . GetDirectoryName ( Path . GetFullPath ( resultsFile ) ) ) ;
62
+ }
63
+ ResultsWriter = XmlWriter . Create ( resultsFile , new XmlWriterSettings ( )
64
+ {
65
+ Indent = true ,
66
+ IndentChars = "\t " ,
67
+ OmitXmlDeclaration = true
68
+ } ) ;
69
+ ResultsWriter . WriteStartDocument ( ) ;
70
+ ResultsWriter . WriteStartElement ( "SignCheckResults" ) ;
71
+ }
72
+
50
73
Lines = 0 ;
51
74
}
52
75
@@ -63,6 +86,12 @@ public override void Close()
63
86
ErrorWriter . Flush ( ) ;
64
87
ErrorWriter . Close ( ) ;
65
88
}
89
+
90
+ if ( ResultsWriter != null )
91
+ {
92
+ ResultsWriter . WriteEndElement ( ) ;
93
+ ResultsWriter . Close ( ) ;
94
+ }
66
95
}
67
96
68
97
public void WriteMessage ( string message )
@@ -134,5 +163,27 @@ public void WriteLine()
134
163
}
135
164
}
136
165
}
166
+
167
+ public void WriteStartResult ( string fileName , string resultType , string error = null )
168
+ {
169
+ if ( ResultsWriter != null )
170
+ {
171
+ ResultsWriter . WriteStartElement ( "File" ) ;
172
+ ResultsWriter . WriteAttributeString ( "Name" , fileName ) ;
173
+ ResultsWriter . WriteAttributeString ( "ResultType" , resultType ) ;
174
+ if ( ! String . IsNullOrEmpty ( error ) )
175
+ {
176
+ ResultsWriter . WriteAttributeString ( "Error" , error ) ;
177
+ }
178
+ }
179
+ }
180
+
181
+ public void WriteEndResult ( )
182
+ {
183
+ if ( ResultsWriter != null )
184
+ {
185
+ ResultsWriter . WriteEndElement ( ) ;
186
+ }
187
+ }
137
188
}
138
189
}
0 commit comments