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>(); }
/// <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")); }
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)); }
/// <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); }
/// <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); }
public SummaryLogMessageFormatter(ExportAddInConfiguration config) : base(config) { }
protected LogMessageFormatter(ExportAddInConfiguration config) { Config = config; }
public DefaultLogMessageFormatter(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()); } }