public MetricExportDefinition(IRepositoryContext context, ExportAddInConfiguration config)
 {
     _context = context;
     Config = config;
     Applications = new HashSet<string>();
     Metrics = new HashSet<string>();
 }
예제 #2
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;
 }
예제 #3
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");
        }
예제 #4
0
        /// <summary>
        /// Create a CSV for a metric that contains multiple instances
        /// </summary>
        public static StreamWriter CreateMetricInstanceStream(IRepositoryContext context, ExportAddInConfiguration config, ISession session, IMetric metric, ref int metricFileCount)
        {
            var info = session.Summary;
            var subFolder = Path.Combine(info.Product, info.Application);
            var metricName = metric.CategoryName + "." + metric.CounterName + "." + metric.InstanceName;
            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");
        }
        /// <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;
        }
 protected LogMessageFormatter(ExportAddInConfiguration config)
 {
     Config = config;
 }
 public DefaultLogMessageFormatter(ExportAddInConfiguration config) : base(config)
 {
 }
 public SummaryLogMessageFormatter(ExportAddInConfiguration config) : base(config)
 {
 }
        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());
            }
        }