Example #1
0
        private void EventSource_ProjectStarted(object sender, ProjectStartedEventArgs e)
        {
            if (!_gotRootProjectStarted)
            {
                //  Add a unique key for this build to each event
                _logger = _logger.ForContext("BuildID", e.ProjectFile + "|" + _buildStartedTime.ToString("O"));
                _gotRootProjectStarted = true;
                foreach (var action in _pendingLogMessages)
                {
                    action();
                }
                _pendingLogMessages.Clear();
            }


            Frame parentFrame   = _frameStack.LastOrDefault();
            Frame parentProject = Enumerable.Reverse(_frameStack).FirstOrDefault(f => f.Type == FrameType.Project);

            PushFrame(new Frame(FrameType.Project, e.ProjectFile, parentFrame));

            string targets = string.IsNullOrEmpty(e.TargetNames) ? "default" : e.TargetNames;

            var loggerWithContext = _logger.WithProperties(e.Properties);

            //  TODO: log items

            if (parentProject == null)
            {
                loggerWithContext.Information("Project {ProjectPath} ({Targets} targets)", e.ProjectFile, targets);
            }
            else
            {
                loggerWithContext.Information("Project {ParentProjectPath} is building {ProjectPath} ({Targets} targets)", parentProject.Name, e.ProjectFile, targets);
            }
        }
Example #2
0
 public SerilogLogger()
 {
     _logger = new LoggerConfiguration()
               //.WriteTo.LiterateConsole()
               .WriteTo.Seq("http://localhost:5341/")
               .CreateLogger();
 }
Example #3
0
 public static Serilog.ILogger WithEnvironment(this Serilog.ILogger logger,
                                               IDictionary <string, string> environment)
 {
     if (environment != null && environment.Any())
     {
         logger = logger.ForContext("Environment", new Dictionary <string, string>(environment));
     }
     return(logger);
 }
Example #4
0
        public static Serilog.ILogger WithProperties(this Serilog.ILogger logger,
                                                     IEnumerable properties)
        {
            var propertyDict = properties.Cast <DictionaryEntry>().ToDictionary(entry => (string)entry.Key, entry => (string)entry.Value);

            if (!propertyDict.Any())
            {
                return(logger);
            }
            return(logger.ForContext("Properties", propertyDict));
        }
Example #5
0
 public static Serilog.ILogger WithTargetOutputs(this Serilog.ILogger logger, IEnumerable targetOutputs)
 {
     if (targetOutputs != null)
     {
         var items = targetOutputs.Cast <ITaskItem>();
         if (items.Any())
         {
             return(logger.ForContext("TargetOutputItems", items.Select(item => item.ItemSpec)));
         }
     }
     return(logger);
 }
Example #6
0
        public static Serilog.ILogger WithStack(this Serilog.ILogger logger, List <Frame> frameStack)
        {
            Frame taskFrame    = null;
            Frame targetFrame  = null;
            Frame projectFrame = null;

            foreach (var frame in Enumerable.Reverse(frameStack))
            {
                if (frame.Type == FrameType.Task && taskFrame == null && targetFrame == null && projectFrame == null)
                {
                    taskFrame = frame;
                }
                else if (frame.Type == FrameType.Target && targetFrame == null && projectFrame == null)
                {
                    targetFrame = frame;
                }
                else if (frame.Type == FrameType.Project)
                {
                    projectFrame = frame;
                    break;
                }
            }

            if (projectFrame != null)
            {
                logger = logger.ForContext("ProjectPath", projectFrame.Name);
            }
            if (targetFrame != null)
            {
                logger = logger.ForContext("TargetName", targetFrame.Name);
            }
            if (taskFrame != null)
            {
                logger = logger.ForContext("TaskName", taskFrame.Name);
            }

            return(logger);
        }