Skip to content

(Obsolete) Log Format

Kirill Osenkov edited this page Nov 24, 2023 · 1 revision

THIS ENTIRE PAGE IS OBSOLETE, ONLY LEFT FOR HISTORICAL REFERENCE

Two formats are currently supported for saving logs: *.buildlog and *.xml. Depending on which file extension you pass to msbuild logger parameter the log will use that format. The UI supports both interchangeably.

.xml

XML is a human-readable format, but build logs tend to be large depending on the size of solution (~1.5 GB for really large builds).

.buildlog

Starting with 1.0.49 a new compact binary format was introduced, that can be 100x-200x smaller than the corresponding XML file. The UI defaults to saving in .buildlog by default although XML is still supported. The custom serializers and deserializers for it are here: https://github.com/KirillOsenkov/MSBuildStructuredLog/tree/master/src/StructuredLogger/Serialization/Binary

The format is a custom binary serializer for the tree, with all the strings deduplicated in a string table. As such, references to repeated strings can only take up a single byte (with Write7BitEncodedInt). Additionally, everything is compressed by GZipStream.

Additionally Structured Log Viewer is able to read the new MSBuild .binlog format: https://github.com/Microsoft/MSBuild/wiki/Binary-Log

See here for the differences between the BinaryLogger built into MSBuild and the StructuredLogger: https://github.com/KirillOsenkov/MSBuildStructuredLog/blob/master/README.md#differences-between-structuredlogger-and-the-new-binarylogger-that-is-shipped-with-msbuild-as-of-151