ionide / proj-info

Parse and evaluate MsBuild project files
MIT License
64 stars 35 forks source link

Consider not logging full MSBuild output on a failed build #201

Open safesparrow opened 5 months ago

safesparrow commented 5 months ago

Is your feature request related to a problem? Please describe. When MSBuild build fails, ProjInfo logs full MSBuild output which is very verbose. It happens here: https://github.com/ionide/proj-info/blob/22b59a7c9411512e7ca23fc376e98227546dd98e/src/Ionide.ProjInfo/Library.fs#L1062-L1065

Sample beginning of output:

[14:18:37 INF] Ionide.ProjInfo.WorkspaceLoaderViaProjectGraph : Started loading projects 20 ["C:\\projekty\\fsharp\\fsharp_scripts\\.cache\\dotnet__fsharp\\9ae94bb9\\_\\tests\\service\\data\\CSharp_Analysis\\CSharp_Analysis.csproj", ...]
[14:18:39 ERR] Ionide.ProjInfo.WorkspaceLoaderViaProjectGraph : Overall Build: Failure, projects built 20 : Build started.
Static graph loaded in 1.055 seconds: 30 nodes, 72 edges
Project "CSharp_Analysis.csproj" (ResolveAssemblyReferencesDesignTime;ResolveProjectReferencesDesignTime;ResolvePackageDependenciesDesignTime;FindReferenceAssembliesForReferences;_GenerateCompileDependencyCache;_ComputeNonExistentFileProperty;BeforeBuild;BeforeCompile;CoreCompile target(s)):
...
(followed by a lot of MSBuild output)

Describe the solution you'd like Better control over how much output is produced in case of failure.

Describe alternatives you've considered Disable ProjInfo's logs through Serilog configuration - but that gets rid of useful log information.

baronfel commented 5 months ago

We should do two things here:

However, we should move to making that build message only generated logged in the first place if the verbosity is at a certain level, because that huge string in memory can't be doing well for our overall allocations.

TheAngryByrd commented 5 months ago

We do have this msbuildLogger so we might even be able to remove the giant string completely and let that show errors/details.