@@ -337,7 +337,44 @@ module ProjectLoader =
337
337
| Success of LoadedProject
338
338
| Error of string
339
339
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 ) =
341
378
{ new ILogger with
342
379
member this.Initialize ( eventSource : IEventSource ) : unit =
343
380
// eventSource.ErrorRaised.Add(fun t -> writer.WriteLine t.Message) //Only log errors
@@ -379,15 +416,19 @@ module ProjectLoader =
379
416
Some tfm
380
417
381
418
let createLoggers ( paths : string seq ) ( binaryLogs : BinaryLogGeneration ) ( sw : StringWriter ) =
382
- let logger = logger ( sw)
419
+ let swLogger = stringWriterLogger ( sw)
420
+ let msBuildLogger = msBuildToLogProvider ()
383
421
384
422
let logFilePath ( dir : DirectoryInfo , projectPath : string ) =
385
423
let projectFileName = Path.GetFileName projectPath
386
424
let logFileName = Path.ChangeExtension( projectFileName, " .binlog" )
387
425
Path.Combine( dir.FullName, logFileName)
388
426
389
427
match binaryLogs with
390
- | BinaryLogGeneration.Off -> [ logger ]
428
+ | BinaryLogGeneration.Off -> [
429
+ swLogger
430
+ msBuildLogger
431
+ ]
391
432
| BinaryLogGeneration.Within dir ->
392
433
let loggers =
393
434
paths
@@ -397,7 +438,8 @@ module ProjectLoader =
397
438
)
398
439
399
440
[
400
- logger
441
+ swLogger
442
+ msBuildLogger
401
443
yield ! loggers
402
444
]
403
445
@@ -923,12 +965,11 @@ type WorkspaceLoaderViaProjectGraph private (toolsPath, ?globalProperties: (stri
923
965
pg
924
966
925
967
let loadProjects ( projects : ProjectGraph , customProperties : string list , binaryLogs : BinaryLogGeneration ) =
926
- let handleError ( e : exn ) =
968
+ let handleError ( msbuildErrors : string ) ( e : exn ) =
927
969
let msg = e.Message
928
- printfn " error -> %A " e
929
970
930
971
logger.error (
931
- Log.setMessage " Failed loading"
972
+ Log.setMessageI $ " Failed loading {msbuildErrors:msbuildErrors} "
932
973
>> Log.addExn e
933
974
)
934
975
@@ -994,27 +1035,34 @@ type WorkspaceLoaderViaProjectGraph private (toolsPath, ?globalProperties: (stri
994
1035
995
1036
bm.EndBuild()
996
1037
1038
+ let msbuildMessage = sw.ToString()
1039
+
997
1040
if
998
1041
result.Exception
999
1042
|> isNull
1000
1043
|> not
1001
1044
then
1002
- handleError result.Exception
1045
+ handleError msbuildMessage result.Exception
1003
1046
else
1004
1047
let buildProjs =
1005
1048
result.ResultsByNode.Keys
1006
1049
|> Seq.collect ( fun ( pgn : ProjectGraphNode ) -> seq { yield pgn.ProjectInstance })
1007
1050
|> Seq.toList
1008
1051
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
+ )
1018
1066
1019
1067
let projects =
1020
1068
buildProjs
@@ -1058,7 +1106,7 @@ type WorkspaceLoaderViaProjectGraph private (toolsPath, ?globalProperties: (stri
1058
1106
1059
1107
allProjectOptions :> seq<_>
1060
1108
with e ->
1061
- handleError e
1109
+ handleError " " e
1062
1110
1063
1111
1064
1112
interface IWorkspaceLoader with
0 commit comments