public ILogger CreateLogger(LoggerVerbosity defaultVerbosity) { string assemblyName = null; string assemblyFile = null; if (File.Exists(Assembly)) { assemblyFile = Assembly; } else { assemblyName = Assembly; } var loggerDescription = new Microsoft.Build.Logging.LoggerDescription( ClassName, assemblyName, assemblyFile, Parameters, Verbosity ?? defaultVerbosity); var logger = loggerDescription.CreateLogger(); logger.Verbosity = Verbosity ?? defaultVerbosity; if (loggerDescription.LoggerSwitchParameters != null) { logger.Parameters = loggerDescription.LoggerSwitchParameters; } return(logger); }
/// <summary> /// Loads a logger from its assembly, instantiates it, and handles errors. /// </summary> /// <returns>Instantiated logger.</returns> private static ILogger CreateAndConfigureLogger ( LoggerDescription loggerDescription, LoggerVerbosity verbosity, string unquotedParameter ) { ILogger logger = null; try { logger = loggerDescription.CreateLogger(); if (logger == null) { InitializationException.VerifyThrow(logger != null, "LoggerNotFoundError", unquotedParameter); } } catch (IOException e) { InitializationException.Throw("LoggerCreationError", unquotedParameter, e, false); } catch (BadImageFormatException e) { InitializationException.Throw("LoggerCreationError", unquotedParameter, e, false); } catch (SecurityException e) { InitializationException.Throw("LoggerCreationError", unquotedParameter, e, false); } catch (ReflectionTypeLoadException e) { InitializationException.Throw("LoggerCreationError", unquotedParameter, e, false); } catch (MemberAccessException e) { InitializationException.Throw("LoggerCreationError", unquotedParameter, e, false); } catch (TargetInvocationException e) { InitializationException.Throw("LoggerFatalError", unquotedParameter, e.InnerException, true); } // Configure the logger by setting the verbosity level and parameters try { // set its verbosity level logger.Verbosity = verbosity; // set the logger parameters (if any) if (loggerDescription.LoggerSwitchParameters != null) { logger.Parameters = loggerDescription.LoggerSwitchParameters; } } catch (LoggerException) { // Logger failed politely during parameter/verbosity setting throw; } catch (Exception e) { InitializationException.Throw("LoggerFatalError", unquotedParameter, e, true); } return logger; }