Exemplo n.º 1
0
 private void Log(string content, bool isBuildMessage = false)
 {
     foreach (var logger in Loggers.Where(l => isBuildMessage ? l.IncludeBuildMessages : l != null))
     {
         logger.Log($"{DateTime.Now.ToString("T")} - {content}");
     }
 }
Exemplo n.º 2
0
 /// <summary>
 ///     returns UserLog listener, applyable for given context
 /// </summary>
 /// <param name="context"> </param>
 /// <param name="host"> </param>
 /// <returns> </returns>
 public IUserLog GetLog(string context, object host)
 {
     lock (Sync) {
         var usableloggers = Loggers.Where(x => x.IsApplyable(context));
         var enumerable    = usableloggers as ILogger[] ?? usableloggers.ToArray();
         if (enumerable.Any())
         {
             return(new LoggerBasedUserLog(enumerable.ToArray(), this, (context ?? "NONAME"))
             {
                 HostObject = host
             });
         }
         return(new StubUserLog {
             HostObject = host
         });
     }
 }
Exemplo n.º 3
0
        private bool Build(Dictionary <string, string> props, List <string> targets)
        {
            var pc = new ProjectCollection();

            Log("Configuring loggers");
            var loggers = new List <ILogger> {
                new BuildMessageLogger(Loggers.Where(l => l.IncludeBuildMessages).ToList())
            };

            Log($"Added {loggers.Count} loggers");
            var buildParams = new BuildParameters(pc)
            {
                DetailedSummary     = true,
                Loggers             = loggers,
                DefaultToolsVersion = "14.0"
            };
            var reqData = new BuildRequestData(ProjectFilePath, props, "14.0", targets.ToArray(), null);

            Log("Preparing for build");
            try
            {
                Manager.BeginBuild(buildParams);
            }
            catch (InvalidOperationException ex) when(ex.Message.Contains("in progress"))
            {
                throw new OperationInProgressException(OperationType.Build, ex);
            }
            Log("Starting MSBuild build");
            var buildResult = Manager.BuildRequest(reqData);

            Log($"MSBuild build complete: {buildResult.OverallResult}");
            if (buildResult.OverallResult == BuildResultCode.Success)
            {
                return(true);
            }
            if (buildResult.Exception?.Message != null)
            {
                Log($"MSBuild build failed with {buildResult.Exception.GetType().Name}: {buildResult.Exception.Message}");
            }
            return(false);
        }
Exemplo n.º 4
0
 /// <summary>
 /// Write a messages to the configured loggers.
 /// </summary>
 /// <param name="message">The message to log.</param>
 /// <param name="level">The log level for the message.</param>
 public static void Write(string message, LogLevel level)
 {
     Loggers.Where(x => x.Level <= level).ToList()
     .ForEach(x => x.Write(message, level));
 }