public MetricExportDefinition(IRepositoryContext context, ExportAddInConfiguration config) { _context = context; Config = config; Applications = new HashSet<string>(); Metrics = new HashSet<string>(); }
/// <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; }
/// <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"); }
/// <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()); } }