/// <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); }
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"); }
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"); }
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)); }
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; } }
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; }
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; } } }