/// <summary> /// Initializes with the argument that was provided with the command. /// </summary> /// <param name="argument">Argument that was provided with the command.</param> public void Initialize(string argument) { if (string.IsNullOrWhiteSpace(argument)) { HandleInvalidArgument(argument); } else { string loggerIdentifier = null; Dictionary <string, string> parameters = null; var parseSucceeded = LoggerUtilities.TryParseLoggerArgument(argument, out loggerIdentifier, out parameters); if (parseSucceeded) { if (loggerIdentifier.Equals(ConsoleLogger.FriendlyName, StringComparison.OrdinalIgnoreCase)) { this.loggerManager.AddLogger(new ConsoleLogger(), ConsoleLogger.ExtensionUri, parameters); } else { this.loggerManager.UpdateLoggerList(argument, loggerIdentifier, parameters); } } else { HandleInvalidArgument(argument); } } }
/// <summary> /// Initializes with the argument that was provided with the command. /// </summary> /// <param name="argument">Argument that was provided with the command.</param> public void Initialize(string argument) { if (string.IsNullOrWhiteSpace(argument)) { HandleInvalidArgument(argument); } else { string loggerIdentifier = null; Dictionary <string, string> parameters = null; var parseSucceeded = LoggerUtilities.TryParseLoggerArgument(argument, out loggerIdentifier, out parameters); if (parseSucceeded) { if (loggerIdentifier.Equals(ConsoleLogger.FriendlyName, StringComparison.OrdinalIgnoreCase)) { this.loggerManager.AddLogger(new ConsoleLogger(), ConsoleLogger.ExtensionUri, parameters); } else { // First assume the logger is specified by URI. If that fails try with friendly name. try { this.AddLoggerByUri(loggerIdentifier, parameters); } catch (CommandLineException) { string loggerUri; if (this.loggerManager.TryGetUriFromFriendlyName(loggerIdentifier, out loggerUri)) { this.AddLoggerByUri(loggerUri, parameters); } else { throw new CommandLineException( String.Format( CultureInfo.CurrentUICulture, CommandLineResources.LoggerNotFound, argument)); } } } } else { HandleInvalidArgument(argument); } } }
/// <summary> /// Add logger to runsettings. /// </summary> /// <param name="loggerArgument"></param> /// <param name="runSettingsManager"></param> public static void AddLoggerToRunSettings(string loggerArgument, IRunSettingsProvider runSettingsManager) { if (string.IsNullOrWhiteSpace(loggerArgument)) { HandleInvalidArgument(loggerArgument); } var settings = runSettingsManager.ActiveRunSettings?.SettingsXml; if (settings == null) { runSettingsManager.AddDefaultRunSettings(); settings = runSettingsManager.ActiveRunSettings?.SettingsXml; } var loggerRunSettings = XmlRunSettingsUtilities.GetLoggerRunSettings(settings) ?? new LoggerRunSettings(); string loggerIdentifier = null; Dictionary <string, string> parameters = null; var parseSucceeded = LoggerUtilities.TryParseLoggerArgument(loggerArgument, out loggerIdentifier, out parameters); if (parseSucceeded) { var logger = default(LoggerSettings); try { // Logger as uri in command line. var loggerUri = new Uri(loggerIdentifier); logger = new LoggerSettings { Uri = loggerUri, IsEnabled = true }; } catch (UriFormatException) { // Logger as friendlyName in command line. logger = new LoggerSettings { FriendlyName = loggerIdentifier, IsEnabled = true }; } // Converting logger console params to Configuration element if (parameters != null && parameters.Count > 0) { var XmlDocument = new XmlDocument(); var outerNode = XmlDocument.CreateElement("Configuration"); foreach (KeyValuePair <string, string> entry in parameters) { var node = XmlDocument.CreateElement(entry.Key); node.InnerText = entry.Value; outerNode.AppendChild(node); } logger.Configuration = outerNode; } // Remove existing logger. var existingLoggerIndex = loggerRunSettings.GetExistingLoggerIndex(logger); if (existingLoggerIndex >= 0) { loggerRunSettings.LoggerSettingsList.RemoveAt(existingLoggerIndex); } loggerRunSettings.LoggerSettingsList.Add(logger); } else { HandleInvalidArgument(loggerArgument); } runSettingsManager.UpdateRunSettingsNodeInnerXml(Constants.LoggerRunSettingsName, loggerRunSettings.ToXml().InnerXml); }