public SessionExportDefinition(IRepositoryContext context)
        {
            _context = context;
            Config   = context.Configuration.Common as ExportAddInConfiguration;
            if (Config == null)
            {
                return; // Enabled is false
            }
            if (!(string.IsNullOrEmpty(Config.Environment) || Config.Environment.Trim().Length == 0))
            {
                var environments = Config.Environment.Split(new [] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries);
                foreach (var trimmed in environments.Select(environment => environment.Trim()))
                {
                    _environments.Add(trimmed);
                }
            }

            ParseExportDefinitions(Config.MetricsToExport);
            if (_configuredApplications.Count == 0)
            {
                return;
            }

            Enabled = true; // Indicates that there is work we can do
        }
 public MetricExportDefinition(IRepositoryContext context, ExportAddInConfiguration config)
 {
     _context     = context;
     Config       = config;
     Applications = new HashSet <string>();
     Metrics      = new HashSet <string>();
 }
Example #3
0
        /// <summary>
        /// Return the path to the exported files associated with an application
        /// </summary>
        public static string GetApplicationPath(ExportAddInConfiguration config, ISessionSummary sessionSummary)
        {
            var info      = sessionSummary;
            var subFolder = Path.Combine(info.Product, info.Application);

            subFolder = illegalInPath.Replace(subFolder, "_");
            var fullPath = Path.Combine(config.SessionExportPath, subFolder);

            return(fullPath);
        }
Example #4
0
        /// <summary>
        /// Create a TXT file for exporting log messages
        /// </summary>
        static public StreamWriter CreateLogStream(IRepositoryContext context, ExportAddInConfiguration config, ISession session)
        {
            var info      = session.Summary;
            var subFolder = Path.Combine(info.Product, info.Application);
            var fileName  = info.EndDateTime.ToString("yyyy-MM-dd HH-mm-ss") + " on " + info.HostName;

            if (config.UseUniqueFilenames)
            {
                fileName += " " + info.Id;
            }

            return(CreateStream(context, config.SessionExportPath, subFolder, fileName, ".txt"));
        }
 protected bool Equals(ExportAddInConfiguration config)
 {
     return(string.Equals(SessionExportPath, config.SessionExportPath) &&
            string.Equals(Environment, config.Environment) &&
            AutoExportSessions.Equals(config.AutoExportSessions) &&
            UseUniqueFilenames.Equals(config.UseUniqueFilenames) &&
            string.Equals(MetricsToExport, config.MetricsToExport) &&
            EnableLogMessageExport.Equals(config.EnableLogMessageExport) &&
            LogMessageFormat == config.LogMessageFormat &&
            MinimumSeverity == config.MinimumSeverity &&
            IncludeSessionSummary.Equals(config.IncludeSessionSummary) &&
            IncludeExceptionDetails.Equals(config.IncludeExceptionDetails));
 }
Example #6
0
        /// <summary>
        /// Called by Gibraltar to have the configuration editor display itself and edit the provided configuration
        /// </summary>
        public DialogResult EditConfiguration(IRepositoryContext context, IRepositoryConfiguration configuration, bool initialConfiguration)
        {
            context.Log.Verbose(LogCategory, "Begin editing Session Export config", null);

            _configuration = configuration.Common as ExportAddInConfiguration ?? new ExportAddInConfiguration();

            DisplayConfiguration(context);

            DialogResult result = ShowDialog();

            if (result == DialogResult.OK)
            {
                //copy back our changes, but first make a clone to allow change logging
                var oldConfig = _configuration.Clone();

                _configuration.SessionExportPath       = txtExportPath.Text;
                _configuration.Environment             = NormalizeEnvironmentList(txtEnvironment.Text);
                _configuration.AutoExportSessions      = chkEnableAutoExport.Checked;
                _configuration.UseUniqueFilenames      = chkEnsureUniqueFilenames.Checked;
                _configuration.MetricsToExport         = txtMetricsToExport.Text;
                _configuration.EnableLogMessageExport  = chkEnableLogMessageExport.Checked;
                _configuration.IncludeSessionSummary   = chkIncludeSessionSummary.Checked;
                _configuration.IncludeExceptionDetails = chkIncludeExceptionDetails.Checked;

                // Store selected format, but guard against parse errors
                var format = LogMessageFormat.Default; // Initialize in case TryParse fails
                if (!Enum.TryParse(cboMessageFormatter.Text, true, out format))
                {
                    context.Log.Error(LogCategory, "Could not parse Log Message Formatter", "Selected value: {0}", cboMessageFormatter.Text);
                }
                _configuration.LogMessageFormat = format;

                // Store selected severity, but guard against parse errors
                var severity = LogMessageSeverity.Verbose; // Initialize in case TryParse fails
                if (!Enum.TryParse(cboMinimumSeverity.Text, true, out severity))
                {
                    context.Log.Error(LogCategory, "Could not parse Log Message Severity", "Selected value: {0}", cboMinimumSeverity.Text);
                }
                _configuration.MinimumSeverity = severity;

                configuration.Common = _configuration;

                LogConfigurationChanges(context, oldConfig);
            }
            else
            {
                context.Log.Verbose(LogCategory, "Canceling Session Export config dialog", null);
            }

            return(result);
        }
Example #7
0
        /// <summary>
        /// Create a CSV for a metric that contains only a single instance
        /// </summary>
        static public StreamWriter CreateMetricStream(IRepositoryContext context, ExportAddInConfiguration config, ISession session, IMetricDefinition metric, ref int metricFileCount)
        {
            var info       = session.Summary;
            var subFolder  = Path.Combine(info.Product, info.Application);
            var metricName = metric.CategoryName + "." + metric.CounterName;

            subFolder = Path.Combine(subFolder, metricName);
            var fileName = info.EndDateTime.ToString("yyyy-MM-dd HH-mm-ss") + " on " + info.HostName;

            fileName += " (" + ++metricFileCount + ")"; // Uniquify filename for convenience with Excel
            if (config.UseUniqueFilenames)
            {
                fileName += " " + info.Id;
            }

            return(CreateStream(context, config.SessionExportPath, subFolder, fileName, ".csv"));
        }
        public ExportAddInConfiguration Clone()
        {
            var clone = new ExportAddInConfiguration
            {
                SessionExportPath       = SessionExportPath,
                Environment             = Environment,
                AutoExportSessions      = AutoExportSessions,
                UseUniqueFilenames      = UseUniqueFilenames,
                MetricsToExport         = MetricsToExport,
                EnableLogMessageExport  = EnableLogMessageExport,
                LogMessageFormat        = LogMessageFormat,
                MinimumSeverity         = MinimumSeverity,
                IncludeSessionSummary   = IncludeSessionSummary,
                IncludeExceptionDetails = IncludeExceptionDetails
            };

            return(clone);
        }
Example #9
0
 public SummaryLogMessageFormatter(ExportAddInConfiguration config) : base(config)
 {
 }
Example #10
0
 protected LogMessageFormatter(ExportAddInConfiguration config)
 {
     Config = config;
 }
 public DefaultLogMessageFormatter(ExportAddInConfiguration config) : base(config)
 {
 }
Example #12
0
        private void LogConfigurationChanges(IRepositoryContext context, ExportAddInConfiguration oldConfig)
        {
            if (oldConfig.Equals(_configuration))
            {
                context.Log.Verbose(LogCategory, "No change to Session Export config", null);
            }
            else
            {
                var msg = new StringBuilder();

                if (_configuration.SessionExportPath != oldConfig.SessionExportPath)
                {
                    msg.AppendFormat("SessionExportPath changed\nOLD: {0}\n|NEW: {1}\n\n",
                                     oldConfig.SessionExportPath, _configuration.SessionExportPath);
                }

                if (_configuration.Environment != oldConfig.Environment)
                {
                    msg.AppendFormat("Environment changed\nOLD: {0}\nNEW: {1}\n\n",
                                     oldConfig.Environment, _configuration.Environment);
                }

                if (_configuration.AutoExportSessions != oldConfig.AutoExportSessions)
                {
                    msg.AppendFormat("AutoExportSessions changed from {0} to {1}\n",
                                     oldConfig.AutoExportSessions, _configuration.AutoExportSessions);
                }

                if (_configuration.UseUniqueFilenames != oldConfig.UseUniqueFilenames)
                {
                    msg.AppendFormat("UseUniqueFilenames changed from {0} to {1}\n",
                                     oldConfig.UseUniqueFilenames, _configuration.UseUniqueFilenames);
                }

                if (_configuration.EnableLogMessageExport != oldConfig.EnableLogMessageExport)
                {
                    msg.AppendFormat("EnableLogMessageExport changed from {0} to {1}\n",
                                     oldConfig.EnableLogMessageExport, _configuration.EnableLogMessageExport);
                }

                if (_configuration.IncludeSessionSummary != oldConfig.IncludeSessionSummary)
                {
                    msg.AppendFormat("IncludeSessionSummary changed from {0} to {1}\n",
                                     oldConfig.IncludeSessionSummary, _configuration.IncludeSessionSummary);
                }

                if (_configuration.IncludeExceptionDetails != oldConfig.IncludeExceptionDetails)
                {
                    msg.AppendFormat("IncludeExceptionDetails changed from {0} to {1}\n",
                                     oldConfig.IncludeExceptionDetails, _configuration.IncludeExceptionDetails);
                }

                if (_configuration.LogMessageFormat != oldConfig.LogMessageFormat)
                {
                    msg.AppendFormat("LogMessageFormat changed from {0} to {1}\n",
                                     oldConfig.LogMessageFormat, _configuration.LogMessageFormat);
                }

                if (_configuration.MinimumSeverity != oldConfig.MinimumSeverity)
                {
                    msg.AppendFormat("MinimumSeverity changed from {0} to {1}\n",
                                     oldConfig.MinimumSeverity, _configuration.MinimumSeverity);
                }

                if (_configuration.MetricsToExport != oldConfig.MetricsToExport)
                {
                    var newLines = ExtractNonComments(_configuration.MetricsToExport);
                    var oldLines = ExtractNonComments(oldConfig.MetricsToExport);
                    if (newLines == oldLines)
                    {
                        msg.AppendFormat("MetricsToExport contains minor changes to comments only");
                    }
                    else
                    {
                        msg.AppendFormat("MetricsToExport changed\nOLD:\n{0}\n|NEW:\n{1}\n",
                                         oldConfig.MetricsToExport, _configuration.MetricsToExport);
                    }
                }

                context.Log.Information(LogCategory, "Export configuration changed", msg.ToString());
            }
        }