VSColorOutput by Blue Onion Software simplifies large logs analysis in the Visual Studio Output window coloring important lines:
For example, C++ developers often need to look at the output to find the origin of an error that involves several template instantiations:
In practice, the most important line in this log includes a reference to a file in the current solution. With VSColorOutput it is easy to highlight lines with references to files in the solution and downplay lines with references to standard include files:
You can classify output lines for your needs using .NET regular expressions. To open the RegExClassification Collection Editor dialog go to Tools – Options – VSColorOutput:
For example, to color build results red when build fails, you can use the following regex “Build: \d+ succeeded( or up-to-date)?, (?!0)\d+ failed” with the classification type LogError and position this member before the “(=====|—–),BuildHead” member as the first member match wins:
Note that after modifying classification rules you need to regenerate output (e.g. rebuild) to see the changes. You can customize colors for each output line type going to Tools – Options – Environment – Fonts and Colors:
VSColorOutput colors trace messages in the Output window during debugging as well. Actually, this was author’s original idea for the extension:
VSColorOutput also supports Visual Studio 11 Developer Preview:
You can download the free VSColorOutput extension for Visual Studio 2010 and Visual Studio 11 from Visual Studio Gallery. You can get source code for the extension from Codeplex.
Version 1.2 includes a new feature: Stop build on first error.
Seriously. How is this not the most downloaded plugin for VS. This thing is awesome. Thank you!! I agree with the author that although the build and find highlighting is nice, where this really shines is in debugging. Every large project I’ve ever worked on has some formatted debugging output which is Log4J-like, and the ability to write custom regexs for filtering is just awesome.
The other thing that inevitably happens, is someone mis-types LogInfo() instead of LogError() for an important error, and you might miss it. Not with this! You can add some simple error regexs to catch common error expressions.