From b5a1619d7bc9a14455ebf3d63cb439acd89a6c2b Mon Sep 17 00:00:00 2001 From: Andrew Arnott Date: Sat, 8 Oct 2016 14:29:39 -0700 Subject: [PATCH] Fix MSBuild task logging --- src/GitLinkTask/GitLink.cs | 52 +++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/src/GitLinkTask/GitLink.cs b/src/GitLinkTask/GitLink.cs index e326f4d..9a62f89 100644 --- a/src/GitLinkTask/GitLink.cs +++ b/src/GitLinkTask/GitLink.cs @@ -8,12 +8,8 @@ namespace GitLinkTask { using System; - using System.IO; - using System.Linq; - using global::GitLink; - using global::GitLink.Pdb; - using global::GitLink.Providers; using Catel.Logging; + using global::GitLink; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; @@ -30,7 +26,7 @@ public class GitLink : Task public override bool Execute() { - LogManager.GetCurrentClassLogger().LogMessage += this.LinkProject_LogMessage; + LogManager.AddListener(new MSBuildListener(this.Log)); var options = new LinkOptions { @@ -43,25 +39,35 @@ public override bool Execute() return success && !this.Log.HasLoggedErrors; } - private void LinkProject_LogMessage(object sender, LogMessageEventArgs e) + private class MSBuildListener : LogListenerBase { - switch (e.LogEvent) + private readonly TaskLoggingHelper log; + + internal MSBuildListener(TaskLoggingHelper log) + { + this.log = log; + } + + protected override void Write(ILog log, string message, LogEvent logEvent, object extraData, LogData logData, DateTime time) { - case LogEvent.Error: - this.Log.LogError(e.Message); - break; - case LogEvent.Warning: - this.Log.LogWarning(e.Message); - break; - case LogEvent.Info: - this.Log.LogMessage(MessageImportance.Normal, e.Message); - break; - case LogEvent.Debug: - this.Log.LogMessage(MessageImportance.Low, e.Message); - break; - default: - break; + switch (logEvent) + { + case LogEvent.Error: + this.log.LogError(message); + break; + case LogEvent.Warning: + this.log.LogWarning(message); + break; + case LogEvent.Info: + this.log.LogMessage(MessageImportance.Normal, message); + break; + case LogEvent.Debug: + this.log.LogMessage(MessageImportance.Low, message); + break; + default: + break; + } } } } -} \ No newline at end of file +}