@@ -337,7 +337,44 @@ module ProjectLoader =
337337 | Success of LoadedProject
338338 | Error of string
339339
340- let internal logger ( writer : StringWriter ) =
340+ let internal msBuildLogger = lazy ( LogProvider.getLoggerByName " MsBuild" ) //lazy because dotnet test wont pickup our logger otherwise
341+
342+ let msBuildToLogProvider () =
343+ let msBuildLogger = msBuildLogger.Value
344+
345+ { new ILogger with
346+ member this.Initialize ( eventSource : IEventSource ) : unit =
347+ eventSource.ErrorRaised.Add( fun t -> msBuildLogger.error ( Log.setMessage t.Message))
348+ eventSource.WarningRaised.Add( fun t -> msBuildLogger.warn ( Log.setMessage t.Message))
349+ eventSource.BuildStarted.Add( fun t -> msBuildLogger.info ( Log.setMessage t.Message))
350+ eventSource.BuildFinished.Add( fun t -> msBuildLogger.info ( Log.setMessage t.Message))
351+
352+ eventSource.MessageRaised.Add( fun t ->
353+ match t.Importance with
354+ | MessageImportance.High -> msBuildLogger.debug ( Log.setMessage t.Message)
355+ | MessageImportance.Normal
356+ | MessageImportance.Low
357+ | _ -> msBuildLogger.trace ( Log.setMessage t.Message)
358+ )
359+
360+ eventSource.TargetStarted.Add( fun t -> msBuildLogger.trace ( Log.setMessage t.Message))
361+ eventSource.TargetFinished.Add( fun t -> msBuildLogger.trace ( Log.setMessage t.Message))
362+ eventSource.TaskStarted.Add( fun t -> msBuildLogger.trace ( Log.setMessage t.Message))
363+ eventSource.TaskFinished.Add( fun t -> msBuildLogger.trace ( Log.setMessage t.Message))
364+
365+ member this.Parameters
366+ with get (): string = " "
367+ and set ( v : string ): unit = ()
368+
369+ member this.Shutdown () : unit = ()
370+
371+ member this.Verbosity
372+ with get (): LoggerVerbosity = LoggerVerbosity.Detailed
373+ and set ( v : LoggerVerbosity ): unit = ()
374+ }
375+
376+
377+ let internal stringWriterLogger ( writer : StringWriter ) =
341378 { new ILogger with
342379 member this.Initialize ( eventSource : IEventSource ) : unit =
343380 // eventSource.ErrorRaised.Add(fun t -> writer.WriteLine t.Message) //Only log errors
@@ -379,15 +416,19 @@ module ProjectLoader =
379416 Some tfm
380417
381418 let createLoggers ( paths : string seq ) ( binaryLogs : BinaryLogGeneration ) ( sw : StringWriter ) =
382- let logger = logger ( sw)
419+ let swLogger = stringWriterLogger ( sw)
420+ let msBuildLogger = msBuildToLogProvider ()
383421
384422 let logFilePath ( dir : DirectoryInfo , projectPath : string ) =
385423 let projectFileName = Path.GetFileName projectPath
386424 let logFileName = Path.ChangeExtension( projectFileName, " .binlog" )
387425 Path.Combine( dir.FullName, logFileName)
388426
389427 match binaryLogs with
390- | BinaryLogGeneration.Off -> [ logger ]
428+ | BinaryLogGeneration.Off -> [
429+ swLogger
430+ msBuildLogger
431+ ]
391432 | BinaryLogGeneration.Within dir ->
392433 let loggers =
393434 paths
@@ -397,7 +438,8 @@ module ProjectLoader =
397438 )
398439
399440 [
400- logger
441+ swLogger
442+ msBuildLogger
401443 yield ! loggers
402444 ]
403445
@@ -923,12 +965,11 @@ type WorkspaceLoaderViaProjectGraph private (toolsPath, ?globalProperties: (stri
923965 pg
924966
925967 let loadProjects ( projects : ProjectGraph , customProperties : string list , binaryLogs : BinaryLogGeneration ) =
926- let handleError ( e : exn ) =
968+ let handleError ( msbuildErrors : string ) ( e : exn ) =
927969 let msg = e.Message
928- printfn " error -> %A " e
929970
930971 logger.error (
931- Log.setMessage " Failed loading"
972+ Log.setMessageI $ " Failed loading {msbuildErrors:msbuildErrors} "
932973 >> Log.addExn e
933974 )
934975
@@ -994,27 +1035,34 @@ type WorkspaceLoaderViaProjectGraph private (toolsPath, ?globalProperties: (stri
9941035
9951036 bm.EndBuild()
9961037
1038+ let msbuildMessage = sw.ToString()
1039+
9971040 if
9981041 result.Exception
9991042 |> isNull
10001043 |> not
10011044 then
1002- handleError result.Exception
1045+ handleError msbuildMessage result.Exception
10031046 else
10041047 let buildProjs =
10051048 result.ResultsByNode.Keys
10061049 |> Seq.collect ( fun ( pgn : ProjectGraphNode ) -> seq { yield pgn.ProjectInstance })
10071050 |> Seq.toList
10081051
1009- logger.info (
1010- Log.setMessage " {overallCode}, projects built {count} {projects} "
1011- >> Log.addContextDestructured
1012- " count"
1013- ( buildProjs
1014- |> Seq.length)
1015- >> Log.addContextDestructured " overallCode" result.OverallResult
1016- >> Log.addExn result.Exception
1017- )
1052+ let projectsBuilt = Seq.length buildProjs
1053+
1054+ match result.OverallResult with
1055+ | BuildResultCode.Success ->
1056+ logger.info (
1057+ Log.setMessageI $" Overall Build: {result.OverallResult:overallCode}, projects built {projectsBuilt:count}"
1058+ >> Log.addExn result.Exception
1059+ )
1060+ | BuildResultCode.Failure
1061+ | _ ->
1062+ logger.error (
1063+ Log.setMessageI $" Overall Build: {result.OverallResult:overallCode}, projects built {projectsBuilt:count} : {msbuildMessage:msbuildMessage} "
1064+ >> Log.addExn result.Exception
1065+ )
10181066
10191067 let projects =
10201068 buildProjs
@@ -1058,7 +1106,7 @@ type WorkspaceLoaderViaProjectGraph private (toolsPath, ?globalProperties: (stri
10581106
10591107 allProjectOptions :> seq<_>
10601108 with e ->
1061- handleError e
1109+ handleError " " e
10621110
10631111
10641112 interface IWorkspaceLoader with
0 commit comments