msbuild icon indicating copy to clipboard operation
msbuild copied to clipboard

MSBuild TerminalLogger keeps users informed about their build and delights new users

Open baronfel opened this issue 2 years ago • 6 comments

The LiveLogger is an exciting new feature that MSBuild team has planned for .NET 8. Originally spearheaded by @edvilme, the LiveLogger is intended to be a live-updating, data-heavy view of what is happening in your build right now, using features present in modern terminals to help declutter and organize build results. The goal for this logger is to become the new default experience for all interactive build sessions started by the .NET CLI!

This issue will serve as a centralized way to check on the status of the LiveLogger feature.

Release plan

We are aiming for an initial 'give it a try', opt-in release by the 8.0.100-preview4 time frame. After that, we'll iterate on the logger to meet our goals for user experience and react to user feedback until we're satisfied with the performance and functionality. At that point, we'll enable the live logger by default in the .NET CLI and the feature will be officially released.

Items to tackle for final release

Before we can do that, the following items should be addressed:

  • [x] The outstanding PRs need to be merged. #8356, #8324, and #8314 all represent the latest work on the logger, and we need to get them integrated to serve as the foundation for further work.
  • [x] #8393
  • [x] An announcement blog for the preview2 timeframe needs to be drafted. I'd like to include @edvilme in the authoring of this post to talk about his time working on it.
  • [x] https://github.com/dotnet/msbuild/issues/8379 We need to iterate on the display of completed-but-irrelevant projects.
  • [ ] #8428 (Consider adding a message to the console logger output advertising LiveLogger during the preview timeframe)
  • [x] #8391
  • [x] #8392
  • [x] #8384
  • [x] #8429 (LiveLogger should respond to user themes)
  • [x] #8430 (Perform code review of the code and cleanup coding/styling standards miss-steps)
  • [x] #8413
  • [x] #8431 (Ensure LiveLogger has the right opt-in state to get the most modern logging including when combined with -bl)
  • [x] #8418
  • [x] #8435
  • [x] Bug bash for preview 2
  • [x] #8450
  • [x] #8455
  • [x] #8456
  • [x] #8458
  • [x] #8460
  • [x] #8463
  • [x] #8464
  • [x] #8715
  • [ ] https://github.com/dotnet/msbuild/issues/8760
  • [ ] https://github.com/dotnet/msbuild/issues/8878
  • [ ] #8782
  • [x] #8781
  • [ ] #8651

baronfel avatar Jan 30 '23 23:01 baronfel

Thank you for the shoutout and including me! 😀

edvilme avatar Jan 30 '23 23:01 edvilme

Regarding the second to last point... before I left I was considering sorting the projects such that the finished ones appear at the top, and that the buffer should scroll to the last added line. However I am unsure if this would hurt performance, and if it would mean a lot of jumping

edvilme avatar Jan 30 '23 23:01 edvilme

Sure thing @edvilme - I'm going to make separate issues for tracking the line items here, so we can go into details on those :+1:

baronfel avatar Jan 30 '23 23:01 baronfel

Consider adding a message to the console logger output advertising LiveLogger during the preview timeframe

Does that mean showing something like "Using Console Logger. Try the new LiveLogger using the switch -livelogger"?

LiveLogger should respond to user themes

Does that mean like dark/light theme?

edvilme avatar Feb 08 '23 05:02 edvilme

Is there a link to documentation on corresponding features in MSBuild tasks, if there are any?

In particular, the "build complete, here is the resulting assembly" message is now retained with the assembly path turned into a hyperlink (or the publish directory for a publish).

Is there a way for build targets that generate other artifacts (in my case, a markdown file with the compiled assembly's public API) to have a similar result, including the hyperlink for the output file? Or is this currently the logger doing "hardcoded" detection of certain messages?

Zastai avatar Dec 31 '23 18:12 Zastai

Is there a way for build targets that generate other artifacts (in my case, a markdown file with the compiled assembly's public API) to have a similar result, including the hyperlink for the output file? Or is this currently the logger doing "hardcoded" detection of certain messages?

Currently it's hardcoded, yes. I have a design in my head to fix this, which I've been meaning to write down but hadn't got around to. Thanks for the reason to do so! https://github.com/dotnet/msbuild/issues/9608

rainersigwald avatar Jan 05 '24 19:01 rainersigwald