If you look around the net
you'll find a few different Xml loggers for MSBuild. When I was writing my book
I decided to write my own Xml Logger for a few different reasons. The source
for the Xml logger that I wrote is available at apress.com.
I'm currently in the process of trying to get some shared space for me to place
my tasks and loggers that I've written for everyone to have a look at. Once I
get that squared away I'll make sure to write an entry about it. In the mean
time let's talk about my Xml logger. What is different about my Xml logger
versus some others that you may find? When I was looking around for one, I
noticed that the ones that I found didn't support building solution files very
well. So that was a deficiency that I wasn't willing to sacrifice with. Besides
that, I noticed that none of them had an append options as most file based
loggers do. So I added that to my Xml logger. I think this is a good option if
you are performing a nightly ( or continuous ) build. That way you have one
place to go to each time you want to see how your build progressed. However
this xml file can get quite large if your build is spanning many projects.
At the bottom of this blog you can download the dll for this logger (Contained
in a zip file). The source will be made available soon. There are 4 logger
arguments:
Name |
Description |
Append |
True/false If true then if a log file exists then it will be append to, otherwise any existing log file will be replaced. |
Logfile |
Name of the log file to write to |
Showsummary |
True/false if true then a summary will be contained in the xml file for errors and warnings. |
Verbosity |
The verbosity level of the logger. Same as msbuild.exe values see MSBuild Command Line Reference |
Here is some sample output:
<MSBuild>
<Build
Started="6/9/2006 1:09:51
AM" Verbosity="Detailed"
Finished="6/9/2006 1:09:56 AM" Succeeded="False">
<Message>Build
started.Message>
<Project
Name="C:\Data\Dreamcatcher_NET\Dreamcatcher\Dreamcatcher.sln"
Message="Project "Dreamcatcher.sln" (Rebuild target(s)):"
\
Started="6/9/2006 1:09:51 AM" Finished="6/9/2006 1:09:56 AM">
<Target
Started="6/9/2006 1:09:51
AM" Name="ValidateSolutionConfiguration"
Message="Target "ValidateSolutionConfiguration" in project "Dreamcatcher.sln"" Finished="6/9/2006 1:09:51 AM" Succeeded="True">
<Task
Started="6/9/2006 1:09:51
AM" Name="Message" Finished="6/9/2006 1:09:51 AM" />
Target>
…
<MSBuild>
Here is what the summary section looks like:
<Warnings>
<Warning
Code="CS0162" Subcategory="">
<Message>Controls\DreamView.cs(450,6):
warning CS0162: Unreachable code detectedMessage>
Warning>
Warnings>
<Errors>
<Error
File="Controls\DreamView.cs" Code="CS1026" Subcategory="">
<Message>Controls\DreamView.cs(459,44):
error CS1026: ) expectedMessage>
<Location
Line="459" ColumnNumber="44" />
Error>
<Error
File="Controls\DreamView.cs" Code="CS1002" Subcategory="">
<Message>Controls\DreamView.cs(459,45):
error CS1002: ; expectedMessage>
<Location
Line="459" ColumnNumber="45" />
Error>
<Error
File="Controls\DreamView.cs" Code="CS1525" Subcategory="">
<Message>Controls\DreamView.cs(459,45):
error CS1525: Invalid expression term ')'Message>
<Location
Line="459" ColumnNumber="45" />
Error>
<Error
File="Controls\DreamView.cs" Code="CS1002" Subcategory="">
<Message>Controls\DreamView.cs(459,46):
error CS1002: ; expectedMessage>
<Location
Line="459" ColumnNumber="46" />
Error>
Errors>
The syntax to use this logger at the command prompt is:
msbuild.exe /l:XmlLogger,PATH_TO_ASSEMBLY\Sedodream.MSBuild.Loggers.dll;logfile=build.xml;verbosity=detailed;append=true;showsummary=true
There is no required parameters the defaults are:
- Logfile=build.log.xml
- Verbosity=normal
- Append=false
- Showsummary=false
Sedodream.MSBuild.Loggers.zip (binaries 9.77 KB)
Sayed Ibrahim Hashimi
Comments are closed.