How to use InitializeLoggerByType method of Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.TestLoggerManager class

Best Vstest code snippet using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.TestLoggerManager.InitializeLoggerByType

TestLoggerManager.cs

Source:TestLoggerManager.cs Github

copy

Full Screen

...128 var loggerInitialized = false;129 // Try initializing logger by type.130 if (!string.IsNullOrWhiteSpace(logger.AssemblyQualifiedName))131 {132 loggerInitialized = InitializeLoggerByType(logger.AssemblyQualifiedName, logger.CodeBase, parameters);133 }134 // Try initializing logger by uri.135 if (!loggerInitialized &&136 !string.IsNullOrWhiteSpace(logger.Uri?.ToString()))137 {138 loggerInitialized = InitializeLoggerByUri(logger.Uri, parameters);139 }140 // Try initializing logger by friendly name.141 if (!loggerInitialized &&142 TryGetUriFromFriendlyName(logger.FriendlyName, out var loggerUri) &&143 loggerUri != null)144 {145 loggerInitialized = InitializeLoggerByUri(loggerUri, parameters);146 }147 // Output error if logger is not initialized.148 if (!loggerInitialized)149 {150 var value = !string.IsNullOrWhiteSpace(logger.AssemblyQualifiedName)151 ? logger.AssemblyQualifiedName152 : !string.IsNullOrWhiteSpace(logger.Uri?.ToString())153 ? logger.Uri.ToString()154 : logger.FriendlyName;155 throw new InvalidLoggerException(156 string.Format(157 CultureInfo.CurrentUICulture,158 CommonResources.LoggerNotFound,159 value));160 }161 }162 requestData.MetricsCollection.Add(TelemetryDataConstants.LoggerUsed, string.Join<Type>(",", this.initializedLoggers.ToArray()));163 }164 /// <summary>165 /// Handles test run message event.166 /// </summary>167 /// <param name="e">TestRunMessage event args.</param>168 public void HandleTestRunMessage(TestRunMessageEventArgs e)169 {170 if (this.isDisposed)171 {172 EqtTrace.Warning("TestLoggerManager.HandleTestRunMessage: Ignoring as the object is disposed.");173 return;174 }175 this.loggerEvents.RaiseTestRunMessage(e);176 }177 /// <summary>178 /// Handle test run stats change event.179 /// </summary>180 /// <param name="e">TestRunChanged event args.</param>181 public void HandleTestRunStatsChange(TestRunChangedEventArgs e)182 {183 if (this.isDisposed)184 {185 EqtTrace.Warning("TestLoggerManager.HandleTestRunStatsChange: Ignoring as the object is disposed.");186 return;187 }188 foreach (TestResult result in e.NewTestResults)189 {190 this.loggerEvents.RaiseTestResult(new TestResultEventArgs(result));191 }192 }193 /// <summary>194 /// Handles test run start event.195 /// </summary>196 /// <param name="e">TestRunStart event args.</param>197 public void HandleTestRunStart(TestRunStartEventArgs e)198 {199 if (this.isDisposed)200 {201 EqtTrace.Warning("TestLoggerManager.HandleTestRunStart: Ignoring as the object is disposed.");202 return;203 }204 this.loggerEvents.RaiseTestRunStart(e);205 }206 /// <summary>207 /// Handles test run complete.208 /// </summary>209 /// <param name="e">TestRunComplete event args.</param>210 public void HandleTestRunComplete(TestRunCompleteEventArgs e)211 {212 if (!this.isDisposed)213 {214 try215 {216 this.loggerEvents.CompleteTestRun(e.TestRunStatistics, e.IsCanceled, e.IsAborted, e.Error,217 e.AttachmentSets, e.ElapsedTimeInRunningTests);218 }219 finally220 {221 this.Dispose();222 }223 }224 else225 {226 // Note: We are not raising warning in case testLoggerManager is disposed as HandleRawMessage and HandleTestRunComplete both can call HandleTestRunComplete.227 EqtTrace.Verbose("TestLoggerManager.HandleTestRunComplete: Ignoring as the object is disposed.");228 }229 }230 /// <summary>231 /// Handles discovery message event.232 /// </summary>233 /// <param name="e">TestRunMessage event args.</param>234 public void HandleDiscoveryMessage(TestRunMessageEventArgs e)235 {236 if (this.isDisposed)237 {238 EqtTrace.Warning("TestLoggerManager.HandleDiscoveryMessage: Ignoring as the object is disposed.");239 return;240 }241 this.loggerEvents.RaiseDiscoveryMessage(e);242 }243 /// <summary>244 /// Handle discovered tests.245 /// </summary>246 /// <param name="e">DiscoveredTests event args.</param>247 public void HandleDiscoveredTests(DiscoveredTestsEventArgs e)248 {249 if (this.isDisposed)250 {251 EqtTrace.Warning("TestLoggerManager.HandleDiscoveredTests: Ignoring as the object is disposed.");252 return;253 }254 this.loggerEvents.RaiseDiscoveredTests(e);255 }256 /// <summary>257 /// Handles discovery complete event.258 /// </summary>259 /// <param name="e">DiscoveryComplete event args.</param>260 public void HandleDiscoveryComplete(DiscoveryCompleteEventArgs e)261 {262 if (!this.isDisposed)263 {264 try265 {266 this.loggerEvents.RaiseDiscoveryComplete(e);267 }268 finally269 {270 this.Dispose();271 }272 }273 else274 {275 // Note: We are not raising warning in case testLoggerManager is disposed as HandleRawMessage and HandleDiscoveryComplete both can call HandleDiscoveryComplete.276 EqtTrace.Verbose("TestLoggerManager.HandleDiscoveryComplete: Ignoring as the object is disposed.");277 }278 }279 /// <summary>280 /// Handles discovery start event.281 /// </summary>282 /// <param name="e">DiscoveryStart event args.</param>283 public void HandleDiscoveryStart(DiscoveryStartEventArgs e)284 {285 if (this.isDisposed)286 {287 EqtTrace.Warning("TestLoggerManager.HandleDiscoveryStart: Ignoring as the object is disposed.");288 return;289 }290 this.loggerEvents.RaiseDiscoveryStart(e);291 }292 /// <summary>293 /// Ensure that all pending messages are sent to the loggers.294 /// </summary>295 public void Dispose()296 {297 this.Dispose(true);298 // Use SupressFinalize in case a subclass299 // of this type implements a finalizer.300 GC.SuppressFinalize(this);301 }302 #endregion303 /// <summary>304 /// Initializes logger with the specified URI and parameters.305 /// For ex. TfsPublisher takes parameters such as Platform, Flavor etc.306 /// </summary>307 /// <param name="uri">URI of the logger to add.</param>308 /// <param name="parameters">Logger parameters.</param>309 /// <returns>Logger Initialized flag.</returns>310 [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2234:PassSystemUriObjectsInsteadOfStrings", Justification = "Case insensitive needs to be supported "), SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "Third party loggers could potentially throw all kinds of exceptions.")]311 internal bool InitializeLoggerByUri(Uri uri, Dictionary<string, string> parameters)312 {313 ValidateArg.NotNull<Uri>(uri, "uri");314 this.CheckDisposed();315 // Look up the extension and initialize it if one is found.316 var extensionManager = this.TestLoggerExtensionManager;317 var logger = extensionManager.TryGetTestExtension(uri.AbsoluteUri);318 if (logger == null)319 {320 return false;321 }322 // If the logger has already been initialized just return.323 if (this.initializedLoggers.Contains(logger.Value.GetType()))324 {325 EqtTrace.Verbose("TestLoggerManager: Skipping duplicate logger initialization: {0}", logger.Value.GetType());326 return true;327 }328 // Initialize logger.329 var initialized = InitializeLogger(logger.Value, logger.Metadata.ExtensionUri, parameters);330 // Add logger in initializedLoggers list.331 if (initialized)332 {333 this.initializedLoggers.Add(logger.Value.GetType());334 }335 return initialized;336 }337 /// <summary>338 /// Tries to get uri of the logger corresponding to the friendly name. If no such logger exists return null.339 /// </summary>340 /// <param name="friendlyName">The friendly Name.</param>341 /// <param name="loggerUri">The logger Uri.</param>342 /// <returns><see cref="bool"/></returns>343 internal bool TryGetUriFromFriendlyName(string friendlyName, out Uri loggerUri)344 {345 var extensionManager = this.TestLoggerExtensionManager;346 foreach (var extension in extensionManager.TestExtensions)347 {348 if (string.Compare(friendlyName, extension.Metadata.FriendlyName, StringComparison.OrdinalIgnoreCase) == 0)349 {350 try351 {352 loggerUri = new Uri(extension.Metadata.ExtensionUri);353 }354 catch (UriFormatException)355 {356 loggerUri = null;357 throw new InvalidLoggerException(358 string.Format(359 CultureInfo.CurrentUICulture,360 CommonResources.LoggerUriInvalid,361 extension.Metadata.ExtensionUri));362 }363 return true;364 }365 }366 loggerUri = null;367 return false;368 }369 /// <summary>370 /// Gets the test results directory.371 /// </summary>372 /// <param name="runSettings">Test run settings.</param>373 /// <returns>Test results directory</returns>374 internal string GetResultsDirectory(string runSettings)375 {376 string resultsDirectory = null;377 if (runSettings != null)378 {379 try380 {381 RunConfiguration runConfiguration = XmlRunSettingsUtilities.GetRunConfigurationNode(runSettings);382 resultsDirectory = RunSettingsUtilities.GetTestResultsDirectory(runConfiguration);383 }384 catch (SettingsException se)385 {386 if (EqtTrace.IsErrorEnabled)387 {388 EqtTrace.Error("TestLoggerManager.GetResultsDirectory: Unable to get the test results directory: Error {0}", se);389 }390 }391 }392 return resultsDirectory;393 }394 /// <summary>395 /// Enables sending of events to the loggers which are registered.396 /// </summary>397 /// <remarks>398 /// By default events are disabled and will not be raised until this method is called.399 /// This is done because during logger initialization, errors could be sent and we do not400 /// want them broadcast out to the loggers until all loggers have been enabled. Without this401 /// all loggers would not receive the errors which were sent prior to initialization finishing.402 /// </remarks>403 internal void EnableLogging()404 {405 this.CheckDisposed();406 this.loggerEvents.EnableEvents();407 }408 /// <summary>409 /// Ensure that all pending messages are sent to the loggers.410 /// </summary>411 /// <param name="disposing">412 /// The disposing.413 /// </param>414 internal virtual void Dispose(bool disposing)415 {416 if (!this.isDisposed)417 {418 if (disposing)419 {420 this.loggerEvents.Dispose();421 }422 this.isDisposed = true;423 }424 }425 /// <summary>426 /// Get parameters from configuration element.427 /// </summary>428 /// <param name="configuration"></param>429 /// <returns></returns>430 private Dictionary<string, string> GetParametersFromConfigurationElement(XmlElement configuration)431 {432 var configurationManager = new LoggerNameValueConfigurationManager(configuration);433 return configurationManager.NameValuePairs;434 }435 /// <summary>436 /// Initialize logger with the specified type and parameters.437 /// </summary>438 /// <param name="assemblyQualifiedName">Assembly qualified name.</param>439 /// <param name="codeBase">Code base.</param>440 /// <param name="parameters">Logger parameters.</param>441 /// <returns>Logger Initialized flag.</returns>442 private bool InitializeLoggerByType(string assemblyQualifiedName, string codeBase, Dictionary<string, string> parameters)443 {444 this.CheckDisposed();445 try446 {447 // Load logger assembly.448 Assembly assembly = this.assemblyLoadContext.LoadAssemblyFromPath(codeBase);449 var loggerType =450 assembly?.GetTypes()451 .FirstOrDefault(x => x.AssemblyQualifiedName.Equals(assemblyQualifiedName));452 // Create logger instance453 var constructorInfo = loggerType?.GetConstructor(Type.EmptyTypes);454 var logger = constructorInfo?.Invoke(new object[] { });455 // Handle logger null scenario.456 if (logger == null)...

Full Screen

Full Screen

InitializeLoggerByType

Using AI Code Generation

copy

Full Screen

1using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client;2using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection;3using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Discovery;4using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution;5using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers;6using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Resources;7using Microsoft.VisualStudio.TestPlatform.ObjectModel;8using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;9using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers;10using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces;

Full Screen

Full Screen

InitializeLoggerByType

Using AI Code Generation

copy

Full Screen

1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client;7using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;8{9 {10 static void Main(string[] args)11 {12 TestLoggerManager testLoggerManager = new TestLoggerManager();13 var testLogger = testLoggerManager.InitializeLoggerByType("console", "C:\\Users\\xyz\\Desktop\\log.txt");14 testLogger.Initialize(null, null);15 testLogger.TestRunMessageHandler(new TestRunMessageEventArgs(TestMessageLevel.Informational, "Hello"));16 testLogger.TestRunCompleteHandler(new TestRunCompleteEventArgs(null, true, false, null, null, null));17 Console.Read();18 }19 }20}

Full Screen

Full Screen

InitializeLoggerByType

Using AI Code Generation

copy

Full Screen

1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client;7using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;8{9 {10 static void Main(string[] args)11 {12 var logger = TestLoggerManager.GetTestLoggerManagerInstance().InitializeLoggerByType("trx");13 logger.Initialize(null, null);14 logger.TestRunMessageHandler(new Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging.TestRunMessageEventArgs("Hello"));15 Console.WriteLine("Hello World!");16 Console.ReadKey();17 }18 }19}

Full Screen

Full Screen

InitializeLoggerByType

Using AI Code Generation

copy

Full Screen

1using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client;2using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;3using System;4using System.Collections.Generic;5using System.IO;6using System.Linq;7using System.Text;8using System.Threading.Tasks;9{10 {11 static void Main(string[] args)12 {13 TestLoggerManager testLoggerManager = new TestLoggerManager();14 testLoggerManager.InitializeLoggerByType("console", null, null, null);15 }16 }17}18using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client;19using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;20using System;21using System.Collections.Generic;22using System.IO;23using System.Linq;24using System.Text;25using System.Threading.Tasks;26{27 {28 static void Main(string[] args)29 {30 TestLoggerManager testLoggerManager = new TestLoggerManager();31 testLoggerManager.InitializeLoggerByType("console", null, null, null);32 }33 }34}35using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client;36using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;37using System;38using System.Collections.Generic;39using System.IO;40using System.Linq;41using System.Text;42using System.Threading.Tasks;43{44 {45 static void Main(string[] args)46 {47 TestLoggerManager testLoggerManager = new TestLoggerManager();48 testLoggerManager.InitializeLoggerByType("console", null, null, null);49 }50 }51}52using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client;53using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;54using System;55using System.Collections.Generic;56using System.IO;57using System.Linq;58using System.Text;59using System.Threading.Tasks;60{61 {62 static void Main(string[] args)63 {64 TestLoggerManager testLoggerManager = new TestLoggerManager();65 testLoggerManager.InitializeLoggerByType("console", null, null, null);66 }67 }68}

Full Screen

Full Screen

InitializeLoggerByType

Using AI Code Generation

copy

Full Screen

1using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client;2using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;3using System;4using System.Collections.Generic;5using System.IO;6using System.Linq;7using System.Text;8using System.Threading.Tasks;9{10 {11 static void Main(string[] args)12 {13 var loggerManager = new TestLoggerManager();14 var logger = loggerManager.InitializeLoggerByType("trx", "C:\\TestLogs\\log.trx", null, null);15 logger.Initialize(null, null);16 logger.Error("This is an error");17 logger.Warning("This is a warning");18 logger.Warning("

Full Screen

Full Screen

InitializeLoggerByType

Using AI Code Generation

copy

Full Screen

1var loggerManager = new TestLoggerManager();2loggerManager.InitializeLoggerByType("loggerType");3var loggerManager = new TestLoggerManager();4loggerManager.InitializeLoggerByType("loggerType", "loggerParameters");5var loggerManager = new TestLoggerManager();6loggerManager.InitializeLoggerByType("loggerType", "loggerParameters", "loggerDirectory");7var loggerManager = new TestLoggerManager();8loggerManager.InitializeLoggerByType("loggerType", "loggerParameters", "loggerDirectory", "loggerVerbosity");9var loggerManager = new TestLoggerManager();10loggerManager.InitializeLoggerByType("loggerType", "loggerParameters", "loggerDirectory", "loggerVerbosity", "loggerEvents");

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful