/// <summary> /// Renders a sales receipt. /// </summary> /// <param name="view"> /// The optional view. /// </param> /// <returns> /// The <see cref="ActionResult"/>. /// </returns> /// <exception cref="NullReferenceException"> /// Throws a null reference exception if the "invoiceKey" is not stored in the CustomerContext /// </exception> public virtual ActionResult SalesReceipt(string view = "") { var logData = MultiLogger.GetBaseLoggingData(); logData.AddCategory("Controllers"); var invoiceKey = CustomerContext.GetValue("invoiceKey"); if (invoiceKey.IsNullOrWhiteSpace()) { var nullRef = new NullReferenceException("The parameter invoiceKey was not found in the CustomerContext"); MultiLogHelper.Error <CheckoutSummaryControllerBase <TSummary, TBillingAddress, TShippingAddress, TLineItem> >("The 'invoiceKey' parameter was not found in the CustomerContext", nullRef, logData); throw nullRef; } try { var key = new Guid(invoiceKey); var invoice = MerchelloServices.InvoiceService.GetByKey(key); var model = CheckoutSummaryFactory.Create(invoice); return(view.IsNullOrWhiteSpace() ? this.PartialView(model) : this.PartialView(view, model)); } catch (Exception ex) { MultiLogHelper.Error <CheckoutSummaryControllerBase <TSummary, TBillingAddress, TShippingAddress, TLineItem> >("Could not render the receipt.", ex, logData); throw; } }
/// <summary> /// Gets the base website url for constructing PayPal response URLs. /// </summary> /// <returns> /// The <see cref="string"/>. /// </returns> public static string GetBaseWebsiteUrl() { var websiteUrl = string.Empty; try { var url = HttpContext.Current.Request.Url; websiteUrl = string.Format( "{0}://{1}{2}", url.Scheme, url.Host, url.IsDefaultPort ? string.Empty : ":" + url.Port).EnsureNotEndsWith('/'); } catch (Exception ex) { var logData = MultiLogger.GetBaseLoggingData(); logData.AddCategory("PayPal"); MultiLogHelper.WarnWithException( typeof(PayPalApiHelper), "Failed to initialize factory setting for WebsiteUrl. HttpContext.Current.Request is likely null.", ex, logData); } return(websiteUrl); }
protected override void OnStart(string[] args) { // start the service ILogger svcLogger = new ServiceLogger(base.EventLog); try { // - set current directory to the install location // - get executable name for file logger Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory; ProcessModule pm = Process.GetCurrentProcess().MainModule; string moduleName = pm.ModuleName.Split('.')[0]; ILogger logger = new MultiLogger(svcLogger, new FileLogger(@"C:\_qrsc\ServiceLogs\" + moduleName + ".{dddd}.log")); _ClientRef = Reference <ICoreClient> .Create(new CoreClientFactory(logger).Create()); _Server = new GridManagerServer(); _Server.Logger = logger; _Server.Client = _ClientRef; _Server.HostInstance = null; _Server.Start(); } catch (Exception ex) { svcLogger.Log(ex); } }
/// <summary> /// Gets default <see cref="IExtendedLoggerData"/>. /// </summary> /// <returns> /// The <see cref="IExtendedLoggerData"/>. /// </returns> protected virtual IExtendedLoggerData GetExtendedLoggerData() { var logData = MultiLogger.GetBaseLoggingData(); logData.AddCategory("SurfaceController"); return(logData); }
public void TestExceptionThrown() { var multiLogger = new MultiLogger(); var mockConsoleLogger = new Mock <ILogger>(); var mockFileLogger = new Mock <ILogger>(); Assert.Empty(multiLogger.Loggers); multiLogger.Loggers.Add(mockConsoleLogger.Object); Assert.Single(multiLogger.Loggers); multiLogger.Loggers.Add(mockFileLogger.Object); Assert.Equal(2, multiLogger.Loggers.Count); var id = new Guid(); var logLevel = LogLevel.Info; var message = "Test message"; var dict = new Dictionary <string, string>(); // Setup mocks mockConsoleLogger.Setup(mcl => mcl.Log(id, logLevel, message, dict)).Throws(new IOException()); mockFileLogger.Setup(mfl => mfl.Log(id, logLevel, message, dict)); // Exception should be caught and process continue multiLogger.Log(id, logLevel, message, dict); // Assert mockConsoleLogger.Verify(mc => mc.Log(id, logLevel, message, dict), Times.Once()); mockFileLogger.Verify(mc => mc.Log(id, logLevel, message, dict), Times.Once()); }
/// <summary> /// Builds the <see cref="AddressType"/>. /// </summary> /// <param name="address"> /// The address. /// </param> /// <returns> /// The <see cref="AddressType"/>. /// </returns> public AddressType Build(IAddress address) { try { return(new AddressType { Name = address.Name, Street1 = address.Address1, Street2 = address.Address2, PostalCode = address.PostalCode, CityName = address.Locality, StateOrProvince = address.Region, CountryName = address.Country().Name, Country = (CountryCodeType) Enum.Parse(typeof(CountryCodeType), address.Country().CountryCode, true), Phone = address.Phone }); } catch (Exception ex) { var logData = MultiLogger.GetBaseLoggingData(); logData.AddCategory("PayPal"); MultiLogHelper.Error <PayPalBasicAmountTypeFactory>("Failed to build an AddressType", ex, logData); throw; } }
/// <summary> /// Constructs an error response message from an exception. /// </summary> /// <param name="ex"> /// The ex. /// </param> /// <returns> /// The <see cref="ExpressCheckoutResponse"/>. /// </returns> public ExpressCheckoutResponse Build(Exception ex) { var logData = MultiLogger.GetBaseLoggingData(); logData.AddCategory("GatewayProviders"); logData.AddCategory("PayPal"); // bubble up the error var errorType = new ErrorType() { SeverityCode = SeverityCodeType.CUSTOMCODE, ShortMessage = ex.Message, LongMessage = ex.Message, ErrorCode = "PPEService" }; logData.SetValue("payPalErrorType", errorType); MultiLogHelper.Error <PayPalExpressCheckoutService>("Failed to get response from PayPalAPIInterfaceServiceService", ex, logData); return(new ExpressCheckoutResponse { Ack = AckCodeType.CUSTOMCODE, ErrorTypes = new List <ErrorType> { errorType } }); }
/// <summary> /// Gets a <see cref="IPaymentGatewayMethod"/> by it's payment code /// </summary> /// <param name="paymentCode">The payment code of the <see cref="IPaymentGatewayMethod"/></param> /// <returns>A <see cref="IPaymentGatewayMethod"/></returns> public override IPaymentGatewayMethod GetPaymentGatewayMethodByPaymentCode(string paymentCode) { var paymentMethod = this.PaymentMethods.FirstOrDefault(x => x.PaymentCode == paymentCode); if (paymentMethod != null) { switch (paymentCode) { case Constants.PayPal.PaymentCodes.ExpressCheckout: return(new PayPalExpressCheckoutPaymentGatewayMethod( this.GatewayProviderService, paymentMethod, GetPayPalApiService())); //// TODO add additional payment methods here } } var logData = MultiLogger.GetBaseLoggingData(); logData.AddCategory("GatewayProviders"); logData.AddCategory("PayPal"); var nullRef = new NullReferenceException(string.Format("PaymentMethod not found for payment code: {0}", paymentCode)); MultiLogHelper.Error <PayPalPaymentGatewayProvider>( "Failed to find payment method for payment code", nullRef, logData); throw nullRef; }
/// ----------------------------------------------------------------------------- /// <summary> /// Initialisation des loggers /// </summary> /// <returns>un MultiLogger lié à une source fichier et console</returns> /// ----------------------------------------------------------------------------- protected override BaseLogger CreateLoggers() { var xmlConfig = new XMLConfig(ConfigFile, 1); Configuration = new ConfigPackage(); Configuration.AddSource(xmlConfig); // Map the path to the current Web Application const string key = CfgFile + Shared.Configuration.BaseConfig.SourceItemAttribute + FileLogger.ConfigFilename; var filename = xmlConfig.Value(key, null); if ((filename != null) && (!Path.IsPathRooted(filename))) { xmlConfig.SetValue(key, _server.MapPath("App_Data" + Path.DirectorySeparatorChar + filename)); } var log = new MultiLogger(); ConsoleLogger = new ConsoleLogger(CfgConsole, Configuration); FileLogger = new FileLogger(CfgFile, Configuration); log.AddLogger(ConsoleLogger); log.AddLogger(FileLogger); return(log); }
/// <summary> /// Creates a <see cref="ICheckoutSummaryModel{TBillingAddress, TShippingAddress, TLineItem}"/>. /// </summary> /// <param name="checkoutManager"> /// The <see cref="ICheckoutManagerBase"/>. /// </param> /// <returns> /// The <see cref="ICheckoutSummaryModel{TBillingAddress, TShippingAddress, TLineItem}"/>. /// </returns> public TSummary Create(ICheckoutManagerBase checkoutManager) { if (!checkoutManager.Payment.IsReadyToInvoice()) { var logData = MultiLogger.GetBaseLoggingData(); var invalidOp = new InvalidOperationException("CheckoutManager is not ready to invoice. Try calling the overloaded Create method passing the IBasket"); MultiLogHelper.Error <CheckoutSummaryModelFactory <TSummary, TBillingAddress, TShippingAddress, TLineItem> >("Could not create checkout summary", invalidOp, logData); throw invalidOp; } var invoice = checkoutManager.Payment.PrepareInvoice(); var billing = invoice.GetBillingAddress(); var shipping = invoice.GetShippingAddresses().FirstOrDefault(); return(new TSummary { BillingAddress = Create <TBillingAddress>(billing ?? new Address { AddressType = AddressType.Billing }), ShippingAddress = Create <TShippingAddress>(shipping ?? new Address { AddressType = AddressType.Shipping }), Items = invoice.Items.Select(Create), Total = invoice.Total }); }
public static void Main() { var logger = new MultiLogger(new ILogger[] { new ConsoleLogger(entry => entry.Level < LogLevel.Error, null, Console.Out), new ConsoleLogger(entry => entry.Level >= LogLevel.Error, null, Console.Error), new DebugLogger(null, null), }); var methodHandlers = new List <IWebDAVMethodHandler>(); foreach (IWebDAVMethodHandler methodHandler in WebDAVMethodHandlers.BuiltIn) { methodHandlers.Add(new LitmusWebDAVMethodHandler(methodHandler)); } using (var server = new WebDAVServer(new WebDAVMemoryStore(), logger, new HttpListenerAdapter(), methodHandlers)) { server.Listener.Prefixes.Add("http://localhost:8888/"); var ipv4Addresses = from address in Dns.GetHostEntry(Environment.MachineName).AddressList where !address.IsIPv6LinkLocal && !address.IsIPv6Multicast && !address.IsIPv6SiteLocal select address.ToString(); foreach (var address in ipv4Addresses) { server.Listener.Prefixes.Add(string.Format(CultureInfo.InvariantCulture, "http://{0}:8888/", address)); } server.Start(); Console.In.ReadLine(); server.Stop(); } }
/// <summary> /// Creates a new view. /// </summary> /// <param name="fileName"> /// The file name. /// </param> /// <param name="viewType"> /// The view type. /// </param> /// <param name="modelName"> /// The model name. /// </param> /// <param name="viewBody"> /// The view body. /// </param> /// <returns> /// A value indicating whether or not the create was successful. /// </returns> public override PluginViewEditorContent CreateNewView(string fileName, PluginViewType viewType, string modelName, string viewBody) { var virtualPath = GetVirtualPathByPlugViewType(viewType); var mapped = EnsureMappedPath(virtualPath); fileName = fileName.Replace(" ", string.Empty); var fullFileName = string.Format("{0}{1}", mapped, fileName); if (!File.Exists(fullFileName)) { using (var sw = File.CreateText(fullFileName)) { sw.WriteLine("@inherits Merchello.Web.Mvc.MerchelloHelperViewPage<{0}>", modelName); sw.WriteLine("@using Merchello.Core"); sw.WriteLine("@using Merchello.Core.Models"); sw.WriteLine("@*"); sw.WriteLine(" MerchelloHelperViewPage<T> inherits from UmbracoViewPage<t> and exposes the MerchelloHelper as 'Merchello'"); sw.WriteLine(" Example usage: var product = Merchello.TypedProductContent(YOURPRODUCTKEY);"); sw.WriteLine("*@"); sw.Close(); } return(GetView(virtualPath, fileName, viewType)); } var logData = MultiLogger.GetBaseLoggingData(); var ex = new InvalidDataException("File already exists"); MultiLogHelper.Error <PluginViewEditorProvider>("Cannot create a duplicate file", ex, logData); throw ex; }
protected SessionHostConfigurationBase(VmConfiguration vmConfiguration, MultiLogger logger, ISystemOperations systemOperations, SessionHostsStartInfo sessionHostsStartInfo) { _logger = logger; VmConfiguration = vmConfiguration; _systemOperations = systemOperations; _sessionHostsStartInfo = sessionHostsStartInfo; }
/// <summary> /// Handles an add item operation exception. /// </summary> /// <param name="model"> /// The <see cref="IAddItemModel"/>. /// </param> /// <param name="ex"> /// The <see cref="Exception"/>. /// </param> /// <returns> /// The <see cref="ActionResult"/>. /// </returns> protected virtual ActionResult HandleAddItemException(TAddItem model, Exception ex) { var logData = MultiLogger.GetBaseLoggingData(); MultiLogHelper.Error <BasketControllerBase <TBasketModel, TBasketItemModel, TAddItem> >("Failed to add item to the basket", ex, logData); throw ex; }
public virtual void OnError(Exception error) { var logData = MultiLogger.GetBaseLoggingData(); logData.AddCategory("Monitors"); MultiLogHelper.Error <MonitorBase <T> >("Monitor error: ", error, logData); }
public virtual void OnCompleted() { var logData = MultiLogger.GetBaseLoggingData(); logData.AddCategory("Monitors"); MultiLogHelper.Debug <MonitorBase <T> >(string.Format("Completed monitoring {0}", GetType()), logData); }
/// <summary> /// Runs the specified action periodically (including amidst exceptions) until explicitly cancelled. /// </summary> /// <param name="action">The operation to perform periodically.</param> /// <param name="systemOperations"></param> /// <param name="intervalBetweenRuns">Delay between performing the operation (if the operation completes or if there is an exception).</param> /// <param name="cancellationToken">Mostly used for unit testing.</param> /// <returns></returns> public static async Task RunUntilCancelled( Func <Task> action, ISystemOperations systemOperations, TimeSpan intervalBetweenRuns, CancellationToken cancellationToken, MultiLogger logger) { while (!cancellationToken.IsCancellationRequested) { try { await action(); } catch (Exception e) { logger.LogException(e); } try { await systemOperations.Delay((int)intervalBetweenRuns.TotalMilliseconds, cancellationToken); } catch (TaskCanceledException ex) { logger.LogInformation($"{nameof(RunUntilCancelled)} stopped with {nameof(TaskCanceledException)}: {ex}"); } } }
public void CanCreateInstance() { var loggers = new ILogger[0]; var multiLogger = new MultiLogger(loggers); Assert.NotNull(multiLogger); }
/// <summary> /// Creates an instance of an Umbraco Surface controller from scratch /// when no existing ControllerContext is present /// </summary> /// <param name="routeData"> /// The route Data. /// </param> /// <typeparam name="T"> /// Type of the controller to create /// </typeparam> /// <returns> /// A surface controller of type T /// </returns> public static T CreateSurfaceController <T>(RouteData routeData = null) where T : SurfaceController { // Create an MVC Controller Context var umbracoContext = GetUmbracoContext(); var umbracoHelper = new UmbracoHelper(umbracoContext); var attempt = ActivatorHelper.CreateInstance <T>(typeof(T), new object[] { umbracoContext, umbracoHelper }); if (!attempt.Success) { var data = MultiLogger.GetBaseLoggingData(); data.AddCategory("SurfaceController"); MultiLogHelper.Error <SurfaceControllerActivationHelper>("Failed to create render controller", attempt.Exception, data); throw attempt.Exception; } var controller = attempt.Result; if (routeData == null) { routeData = new RouteData(); } if (!routeData.Values.ContainsKey("controller") && !routeData.Values.ContainsKey("Controller")) { routeData.Values.Add( "controller", controller.GetType().Name.ToLower().Replace("controller", string.Empty)); } controller.ControllerContext = new ControllerContext(umbracoContext.HttpContext, routeData, controller); return(controller); }
protected override void RegisterTypes(IContainerRegistry containerRegistry) { var logger = new MultiLogger(); logger.AddLogger(new DebugConsoleLogger()); containerRegistry.RegisterInstance <ILoggerFacade>(logger); }
/// <summary> /// Handles a shipping address save exception. /// </summary> /// <param name="model"> /// The <see cref="ICheckoutAddressModel"/>. /// </param> /// <param name="ex"> /// The <see cref="Exception"/>. /// </param> /// <returns> /// The <see cref="ActionResult"/>. /// </returns> /// <exception cref="Exception"> /// The <see cref="Exception"/> to be handled /// </exception> protected virtual ActionResult HandleShippingAddressSaveException(TShippingAddress model, Exception ex) { var logData = MultiLogger.GetBaseLoggingData(); logData.AddCategory("Controller"); MultiLogHelper.Error <CheckoutAddressControllerBase <TBillingAddress, TShippingAddress> >("Failed to save shipping address", ex, logData); throw ex; }
/// <summary> /// Handles a payment exception. /// </summary> /// <param name="model"> /// The <see cref="ICheckoutPaymentModel"/>. /// </param> /// <param name="ex"> /// The <see cref="Exception"/>. /// </param> /// <returns> /// The <see cref="ActionResult"/>. /// </returns> /// <exception cref="Exception"> /// The <see cref="Exception"/> to be handled /// </exception> protected virtual ActionResult HandlePaymentException(TPaymentModel model, Exception ex) { var logData = MultiLogger.GetBaseLoggingData(); logData.AddCategory("Controllers"); MultiLogHelper.Error <CheckoutPaymentControllerBase <TPaymentModel> >("Failed payment operation.", ex, logData); throw ex; }
/// <summary> /// Creates the application context for the tests. /// </summary> protected virtual void CreateApplicationContext() { var logger = new MultiLogger(LogggersToUse.ToArray()); ApplicationContext.Setup(new StaticContextStorage(), logger, new AdjustableNetworkContext(o => o, new NumericallyIncrementingGuidProvider().SetSeedValue(1000))); }
/// <summary> /// Gets the extended logger data. /// </summary> /// <returns> /// The <see cref="IExtendedLoggerData"/>. /// </returns> protected IExtendedLoggerData GetLoggerData() { var logData = MultiLogger.GetBaseLoggingData(); logData.AddCategory("PayPal"); return(logData); }
/// <summary> /// Handles a wish list update exception /// </summary> /// <param name="model"> /// The model. /// </param> /// <param name="ex"> /// The ex. /// </param> /// <returns> /// The <see cref="ActionResult"/>. /// </returns> /// <remarks> /// Allows for customization of the redirection after a custom update basket operation /// </remarks> protected virtual ActionResult HandleUpdateWishListException(TItemCacheModel model, Exception ex) { var logData = MultiLogger.GetBaseLoggingData(); MultiLogHelper.Error <WishListControllerBase <TItemCacheModel, TLineItemModel> >("Failed to update wish list", ex, logData); throw ex; }
/// <summary> /// Handles the exception in the remove discount operation. /// </summary> /// <param name="sku"> /// The line item SKU for the discount line item. /// </param> /// <param name="contentRedirectId"> /// The Umbraco content Id for redirection. /// </param> /// <param name="ex"> /// The <see cref="Exception"/> /// </param> /// <returns> /// The <see cref="ActionResult"/>. /// </returns> protected virtual ActionResult HandleRemoveDiscountException(string sku, int contentRedirectId, Exception ex) { var logData = MultiLogger.GetBaseLoggingData(); logData.AddCategory("Controllers"); MultiLogHelper.WarnWithException <CheckoutDiscountControllerBase <TDiscountModel, TLineItemModel> >("Failed to remove discount", ex, logData); return(RedirectToUmbracoPage(contentRedirectId)); }
/// <summary> /// Handle payment form exception. /// </summary> /// <param name="ex"> /// The <see cref="Exception"/>. /// </param> /// <returns> /// The <see cref="ActionResult"/>. /// </returns> /// <exception cref="Exception"> /// The <see cref="Exception"/> to be handled /// </exception> protected virtual ActionResult HandlePaymentFormException(Exception ex) { var logData = MultiLogger.GetBaseLoggingData(); logData.AddCategory("Controllers"); MultiLogHelper.Error <CheckoutResolvePaymentController>("Could not render payment form.", ex, logData); throw ex; }
/// <summary> /// Creates the application context for the tests. /// </summary> protected override void CreateApplicationContext() { var logger = new MultiLogger(new ConsoleLogger(), new TraceLogger()); NetworkContext = NewMock <INetworkContext>(); ApplicationContext.Setup(new StaticContextStorage(), logger, NetworkContext); }
/// <summary> /// Creates the <see cref="IExtendedLoggerData"/>. /// </summary> /// <param name="constructorArgs"> /// The constructor args. /// </param> /// <typeparam name="TService"> /// The type of the service attempting to be instantiated /// </typeparam> /// <returns> /// The <see cref="IExtendedLoggerData"/>. /// </returns> private IExtendedLoggerData GetLoggerData <TService>(object[] constructorArgs = null) { var loggerData = MultiLogger.GetBaseLoggingData(); loggerData.AddCategory("Resolvers"); loggerData.AddCategory("Services"); return(loggerData); }
/// <summary> /// Gets the default extended log data. /// </summary> /// <returns> /// The <see cref="IExtendedLoggerData"/>. /// </returns> protected override IExtendedLoggerData GetExtendedLoggerData() { var logData = MultiLogger.GetBaseLoggingData(); logData.AddCategory("Controllers"); logData.AddCategory("PayPal"); return(logData); }
/// <summary> /// Возвращает MultiLogger /// </summary> /// <param name="subloggers">масив логгеров для объединения</param> /// <returns>MultiLogger или null(если масив пуст или все элименты равны null)</returns> public static ILogger Get(ILogger[] subloggers) { if (subloggers == null) return null; if (subloggers.Length == 0) return null; MultiLogger log = new MultiLogger(); log.subloggers = new ILogger[subloggers.Length]; for (int i = 0; i < subloggers.Length; i++) { if (subloggers[i] == null) continue; log.subloggers[log.count] = subloggers[i]; log.count++; } if (log.count < 1) return null; return log; }