/// <summary>
        /// Creates an event listener that logs using a <see cref="RollingFlatFileSink"/>.
        /// </summary>
        /// <param name="fileName">The filename where the entries will be logged.</param>
        /// <param name="rollSizeKB">The maximum file size (KB) before rolling.</param>
        /// <param name="timestampPattern">The date format that will be appended to the new roll file.</param>
        /// <param name="rollFileExistsBehavior">Expected behavior that will be used when the roll file has to be created.</param>
        /// <param name="rollInterval">The time interval that makes the file to be rolled.</param>
        /// <param name="formatter">The formatter.</param>
        /// <param name="maxArchivedFiles">The maximum number of archived files to keep.</param>
        /// <param name="isAsync">Specifies if the writing should be done asynchronously, or synchronously with a blocking call.</param>
        /// <returns>An event listener that uses <see cref="RollingFlatFileSink"/> to log events.</returns>
        public static EventListener CreateListener(string fileName, int rollSizeKB, string timestampPattern, RollFileExistsBehavior rollFileExistsBehavior, RollInterval rollInterval, IEventTextFormatter formatter = null, int maxArchivedFiles = 0, bool isAsync = false)
        {
            var listener = new ObservableEventListener();

            listener.LogToRollingFlatFile(fileName, rollSizeKB, timestampPattern, rollFileExistsBehavior, rollInterval, formatter, maxArchivedFiles, isAsync);
            return(listener);
        }
Exemple #2
0
        public override void Initialize()
        {
            var eventListener = new ObservableEventListener();

            eventListener.EnableEvents(
                VirtoCommerceEventSource.Log,
                EventLevel.LogAlways,
                Keywords.All);

            

            var assetsConnection = ConfigurationManager.ConnectionStrings["AssetsConnectionString"];

            if (assetsConnection != null)
            {
                var properties = assetsConnection.ConnectionString.ToDictionary(";", "=");
                var provider = properties["provider"];
                var assetsConnectionString = properties.ToString(";", "=", "provider");

                if (string.Equals(provider, FileSystemBlobProvider.ProviderName, StringComparison.OrdinalIgnoreCase))
                {
                    eventListener.LogToRollingFlatFile("AvaTax.log",
                        10000,
                        "hh",
                        RollFileExistsBehavior.Increment,
                        RollInterval.Day);
                }
                else
                    if (string.Equals(provider, AzureBlobProvider.ProviderName, StringComparison.OrdinalIgnoreCase))
                    {
                        eventListener.LogToWindowsAzureTable(
                            "VirtoCommerce2", assetsConnectionString);

                    }
            }


            var settingsManager = _container.Resolve<ISettingsManager>();
            
            var avalaraTax = new AvaTaxSettings(_usernamePropertyName, _passwordPropertyName, _serviceUrlPropertyName, _companyCodePropertyName, _isEnabledPropertyName, _isValidateAddressPropertyName, settingsManager);
            
            _container.RegisterType<AvaTaxController>
                (new InjectionConstructor(
                    avalaraTax));

            _container.RegisterInstance<ITaxSettings>(avalaraTax);

            //Subscribe to cart changes. Calculate taxes   
            _container.RegisterType<IObserver<CartChangeEvent>, CalculateCartTaxesObserver>("CalculateCartTaxesObserver");

            //Subscribe to order changes. Calculate taxes   
            _container.RegisterType<IObserver<OrderChangeEvent>, CalculateOrderTaxesObserver>("CalculateOrderTaxesObserver");

            //Subscribe to order changes. Calculate taxes   
            _container.RegisterType<IObserver<OrderChangeEvent>, CancelOrderTaxesObserver>("CancelOrderTaxesObserver");

            //Subscribe to order changes. Adjust taxes   
            _container.RegisterType<IObserver<OrderChangeEvent>, CalculateTaxAdjustmentObserver>("CalculateTaxAdjustmentObserver");
        }
Exemple #3
0
        public override void Initialize()
        {
            var eventListener = new ObservableEventListener();

            eventListener.EnableEvents(
                VirtoCommerceEventSource.Log,
                EventLevel.LogAlways,
                Keywords.All);



            var assetsConnection = ConfigurationManager.ConnectionStrings["AssetsConnectionString"];

            if (assetsConnection != null)
            {
                var properties             = assetsConnection.ConnectionString.ToDictionary(";", "=");
                var provider               = properties["provider"];
                var assetsConnectionString = properties.ToString(";", "=", "provider");

                if (string.Equals(provider, FileSystemBlobProvider.ProviderName, StringComparison.OrdinalIgnoreCase))
                {
                    eventListener.LogToRollingFlatFile("AvaTax.log",
                                                       10000,
                                                       "hh",
                                                       RollFileExistsBehavior.Increment,
                                                       RollInterval.Day);
                }
                else
                if (string.Equals(provider, AzureBlobProvider.ProviderName, StringComparison.OrdinalIgnoreCase))
                {
                    eventListener.LogToWindowsAzureTable(
                        "VirtoCommerce2", assetsConnectionString);
                }
            }


            var settingsManager = _container.Resolve <ISettingsManager>();

            var avalaraTax = new AvaTaxSettings(_usernamePropertyName, _passwordPropertyName, _serviceUrlPropertyName, _companyCodePropertyName, _isEnabledPropertyName, _isValidateAddressPropertyName, settingsManager);

            _container.RegisterType <AvaTaxController>
                (new InjectionConstructor(
                    avalaraTax));

            _container.RegisterInstance <ITaxSettings>(avalaraTax);

            //Subscribe to cart changes. Calculate taxes
            _container.RegisterType <IObserver <CartChangeEvent>, CalculateCartTaxesObserver>("CalculateCartTaxesObserver");

            //Subscribe to order changes. Calculate taxes
            _container.RegisterType <IObserver <OrderChangeEvent>, CalculateOrderTaxesObserver>("CalculateOrderTaxesObserver");

            //Subscribe to order changes. Calculate taxes
            _container.RegisterType <IObserver <OrderChangeEvent>, CancelOrderTaxesObserver>("CancelOrderTaxesObserver");

            //Subscribe to order changes. Adjust taxes
            _container.RegisterType <IObserver <OrderChangeEvent>, CalculateTaxAdjustmentObserver>("CalculateTaxAdjustmentObserver");
        }
Exemple #4
0
        public static void Start(bool console, string logPath, string traceNames)
        {
            Listener.EnableEvents((EventSource)Harmonize.Instrumentation.Error, EventLevel.Warning, Keywords.All);
            Listener.EnableEvents((EventSource)Harmonize.Instrumentation.Harmonization, EventLevel.LogAlways, Keywords.All);

            traceNames.Split(',').Select(name => name.Trim()).ForEach(name => Listener.EnableEvents(name, EventLevel.LogAlways, Keywords.All));

            Subscription = console
                ? (IDisposable)Listener.LogToConsole()
                : (IDisposable)Listener.LogToRollingFlatFile(logPath, 1048576, "yyyymmddhhMMss", RollFileExistsBehavior.Increment, RollInterval.Midnight, new EventTextFormatter(null, null, EventLevel.LogAlways));
        }
Exemple #5
0
        public void CreateRollingFlatFileListener(EventLevel eventLevel, string fileName, int rollSizeKB)
        {
            var basefilepath = fileName;

            fileName = Path.Combine(Path.GetDirectoryName(fileName), Path.GetFileNameWithoutExtension(fileName) + "." + DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss-ff") + Path.GetExtension(fileName));
            var listener = new ObservableEventListener();

            listener.EnableEvents(LogEventSource.Log, eventLevel, Keywords.All);
            listener.LogToRollingFlatFile(fileName, rollSizeKB, "yyyy-MM-dd HH-mm-ss", RollFileExistsBehavior.Increment, RollInterval.Midnight);
            var purger = new RollingFlatFilePurger(Path.GetDirectoryName(basefilepath), Path.GetFileName(basefilepath), 1000);

            purger.Purge();
            try
            {
                ((ObservableEventListener)listener).LogToEmail(Path.GetFileNameWithoutExtension(basefilepath));
            }
            catch
            {
            }
        }
        protected override void InitializeLocalLogging()
        {
            _platformEventStream = new ObservableEventListener();
            _platformEventStream.EnableEvents(EventSources.PlatformSources, TraceLevel);

            var formatter = new EventTextFormatter(dateTimeFormat: "O");

            _platformEventStream.Subscribe(evt =>
            {
                StringBuilder b = new StringBuilder();
                using (var writer = new StringWriter(b))
                {
                    formatter.WriteEvent(evt, writer);
                }
                Trace.WriteLine(b.ToString());
            });

            try
            {
                var logsResource = RoleEnvironment.GetLocalResource("Logs");

                var logFile = Path.Combine(logsResource.RootPath, "Platform", "Platform.log.json");

                // Initialize core platform logging
                _subscriptions.Add(_platformEventStream.LogToRollingFlatFile(
                                       fileName: logFile,
                                       rollSizeKB: 1024,
                                       timestampPattern: "yyyyMMdd-HHmmss",
                                       rollFileExistsBehavior: RollFileExistsBehavior.Increment,
                                       rollInterval: RollInterval.Hour,
                                       formatter: new JsonEventTextFormatter(EventTextFormatting.Indented, dateTimeFormat: "O"),
                                       maxArchivedFiles: 768, // We have a buffer size of 1024MB for this folder
                                       isAsync: false));
            }
            catch (Exception ex)
            {
                ServicePlatformEventSource.Log.FatalException(ex);
                throw;
            }
        }
Exemple #7
0
        public void Start(TflProcess process)
        {
            if (_started)
            {
                return;
            }

            _started = true;
            Name     = process.Name;
            foreach (var log in process.Log)
            {
                switch (log.Provider)
                {
                case "file":
                    log.Folder = log.Folder.Replace('/', '\\');
                    log.File   = log.File.Replace('/', '\\');
                    log.Folder = (log.Folder.Equals(Common.DefaultValue) ? "logs" : log.Folder).TrimEnd('\\') + "\\";
                    log.File   = (log.File.Equals(Common.DefaultValue) ? "tfl-" + process.Name + ".log" : log.File).TrimStart('\\');

                    var fileListener = new ObservableEventListener();
                    fileListener.EnableEvents(TflEventSource.Log, (EventLevel)Enum.Parse(typeof(EventLevel), log.Level));
                    SinkSubscriptions.Add(fileListener.LogToRollingFlatFile(log.Folder + log.File, 5000, "yyyy-MM-dd", RollFileExistsBehavior.Increment, RollInterval.Day, new LegacyLogFormatter(), 0, log.Async));
                    EventListeners.Add(fileListener);
                    break;

                case "mail":
                    if (log.Subject.Equals(Common.DefaultValue))
                    {
                        log.Subject = process.Name + " " + log.Level;
                    }
                    var mailListener = new ObservableEventListener();
                    mailListener.EnableEvents(TflEventSource.Log, EventLevel.Error);
                    SinkSubscriptions.Add(mailListener.LogToEmail(log));
                    EventListeners.Add(mailListener);
                    break;
                }
            }
        }
        public void WhenFilenameInvalidErrorOCcursEarly2()
        {
            var excpectionThrown = ExceptionAssertHelper.Throws<ArgumentException>(() =>
                {
                    using (var listener = new ObservableEventListener())
                    {
                        listener.LogToRollingFlatFile(@"..\", 1, "yyyy", RollFileExistsBehavior.Increment, RollInterval.None, new EventTextFormatter(EventTextFormatter.DashSeparator));
                    }
                });

            Assert.AreEqual("A file name with a relative path is not allowed. Provide only the file name or the full path of the file.", excpectionThrown.Message);
        }
        public void WhenFilenameInvalidErrorOCcursEarly1()
        {
            var excpectionThrown = ExceptionAssertHelper.Throws<ArgumentException>(() =>
                {
                    using (var listener = new ObservableEventListener())
                    {
                        listener.LogToRollingFlatFile(@"|", 1, "yyyy", RollFileExistsBehavior.Increment, RollInterval.None, new EventTextFormatter(EventTextFormatter.DashSeparator));
                    }
                });

            Assert.AreEqual("Illegal characters in path.", excpectionThrown.Message);
        }
        public void WhenTimestampPatternIsEmpty()
        {
            var excpectionThrown = ExceptionAssertHelper.Throws<ArgumentException>(() =>
                {
                    using (var listener = new ObservableEventListener())
                    {
                        listener.LogToRollingFlatFile("TestForTimestampAsEmptyString.log", 0, string.Empty, RollFileExistsBehavior.Increment, RollInterval.Midnight, new EventTextFormatter(EventTextFormatter.DashSeparator));
                    }
                });

            Assert.AreEqual("Argument is empty\r\nParameter name: timestampPattern", excpectionThrown.Message);
        }
        public void WhenFileNameIsEmpty()
        {
            using (var listener = new ObservableEventListener())
            {
                var subscription = listener.LogToRollingFlatFile(string.Empty, 1, "yyyy", RollFileExistsBehavior.Increment, RollInterval.None, new EventTextFormatter(EventTextFormatter.DashSeparator));

                Assert.IsNotNull(subscription);
            }
        }
 /// <summary>
 /// Creates an event listener that logs using a <see cref="RollingFlatFileSink"/>.
 /// </summary>
 /// <param name="fileName">The filename where the entries will be logged.</param>
 /// <param name="rollSizeKB">The maximum file size (KB) before rolling.</param>
 /// <param name="timestampPattern">The date format that will be appended to the new roll file.</param>
 /// <param name="rollFileExistsBehavior">Expected behavior that will be used when the roll file has to be created.</param>
 /// <param name="rollInterval">The time interval that makes the file to be rolled.</param>
 /// <param name="formatter">The formatter.</param>
 /// <param name="maxArchivedFiles">The maximum number of archived files to keep.</param>
 /// <param name="isAsync">Specifies if the writing should be done asynchronously, or synchronously with a blocking call.</param>
 /// <returns>An event listener that uses <see cref="RollingFlatFileSink"/> to log events.</returns>
 public static EventListener CreateListener(string fileName, int rollSizeKB, string timestampPattern, RollFileExistsBehavior rollFileExistsBehavior, RollInterval rollInterval, IEventTextFormatter formatter = null, int maxArchivedFiles = 0, bool isAsync = false)
 {
     var listener = new ObservableEventListener();
     listener.LogToRollingFlatFile(fileName, rollSizeKB, timestampPattern, rollFileExistsBehavior, rollInterval, formatter, maxArchivedFiles, isAsync);
     return listener;
 }
        protected override void InitializeLocalLogging()
        {
            _platformEventStream = new ObservableEventListener();
            _platformEventStream.EnableEvents(EventSources.PlatformSources, TraceLevel);

            var formatter = new EventTextFormatter(dateTimeFormat: "O");
            _platformEventStream.Subscribe(evt =>
            {
                StringBuilder b = new StringBuilder();
                using (var writer = new StringWriter(b))
                {
                    formatter.WriteEvent(evt, writer);
                }
                Trace.WriteLine(b.ToString());
            });

            try
            {
                var logsResource = RoleEnvironment.GetLocalResource("Logs");

                var logFile = Path.Combine(logsResource.RootPath, "Platform", "Platform.log.json");

                // Initialize core platform logging
                _subscriptions.Add(_platformEventStream.LogToRollingFlatFile(
                    fileName: logFile,
                    rollSizeKB: 1024,
                    timestampPattern: "yyyyMMdd-HHmmss",
                    rollFileExistsBehavior: RollFileExistsBehavior.Increment,
                    rollInterval: RollInterval.Hour,
                    formatter: new JsonEventTextFormatter(EventTextFormatting.Indented, dateTimeFormat: "O"),
                    maxArchivedFiles: 768, // We have a buffer size of 1024MB for this folder
                    isAsync: false));
            }
            catch (Exception ex)
            {
                ServicePlatformEventSource.Log.FatalException(ex);
                throw;
            }
        }
        public void Start(TflProcess process) {
            if (_started)
                return;

            _started = true;
            Name = process.Name;
            foreach (var log in process.Log) {
                switch (log.Provider) {
                    case "file":
                        log.Folder = log.Folder.Replace('/', '\\');
                        log.File = log.File.Replace('/', '\\');
                        log.Folder = (log.Folder.Equals(Common.DefaultValue) ? "logs" : log.Folder).TrimEnd('\\') + "\\";
                        log.File = (log.File.Equals(Common.DefaultValue) ? "tfl-" + process.Name + ".log" : log.File).TrimStart('\\');

                        var fileListener = new ObservableEventListener();
                        fileListener.EnableEvents(TflEventSource.Log, (EventLevel)Enum.Parse(typeof(EventLevel), log.Level));
                        SinkSubscriptions.Add(fileListener.LogToRollingFlatFile(log.Folder + log.File, 5000, "yyyy-MM-dd", RollFileExistsBehavior.Increment, RollInterval.Day, new LegacyLogFormatter(), 0, log.Async));
                        EventListeners.Add(fileListener);
                        break;
                    case "mail":
                        if (log.Subject.Equals(Common.DefaultValue)) {
                            log.Subject = process.Name + " " + log.Level;
                        }
                        var mailListener = new ObservableEventListener();
                        mailListener.EnableEvents(TflEventSource.Log, EventLevel.Error);
                        SinkSubscriptions.Add(mailListener.LogToEmail(log));
                        EventListeners.Add(mailListener);
                        break;
                }

            }

        }