private void WriteWebsite(Site websiteObject) { SiteConfig config = WebsitesClient.GetWebsiteConfiguration(websiteObject.Name); var diagnosticSettings = new DiagnosticsSettings(); try { diagnosticSettings = WebsitesClient.GetApplicationDiagnosticsSettings(websiteObject.Name); } catch { // Ignore exception and use default values } WebsiteInstance[] instanceIds; try { instanceIds = WebsitesClient.ListWebsiteInstances(websiteObject.WebSpace, websiteObject.Name); } catch { // TODO: Temporary workaround for issue where slots are not supported with this API (yet). instanceIds = new WebsiteInstance[0]; } WriteObject(new SiteWithConfig(websiteObject, config, diagnosticSettings, instanceIds), false); }
public void only_cache_up_to_the_setting_limit() { var settings = new DiagnosticsSettings { MaxRequests = 10 }; var cache = new RequestHistoryCache(settings); cache.Store(new RequestLog()); cache.Store(new RequestLog()); cache.Store(new RequestLog()); cache.Store(new RequestLog()); cache.Store(new RequestLog()); cache.Store(new RequestLog()); cache.Store(new RequestLog()); cache.Store(new RequestLog()); cache.Store(new RequestLog()); cache.RecentReports().Count().ShouldEqual(9); cache.Store(new RequestLog()); cache.Store(new RequestLog()); cache.Store(new RequestLog()); cache.Store(new RequestLog()); cache.Store(new RequestLog()); cache.RecentReports().Count().ShouldEqual(settings.MaxRequests); }
public SiteWithConfig() { Site = new Site(); SiteConfig = new SiteConfig(); AppSettings = new Hashtable(); DiagnosticsSettings = new DiagnosticsSettings(); }
public void only_cache_up_to_the_setting_limit() { var settings = new DiagnosticsSettings { MaxRequests = 10 }; var cache = new ChainExecutionHistory(settings); cache.Store(new ChainExecutionLog()); cache.Store(new ChainExecutionLog()); cache.Store(new ChainExecutionLog()); cache.Store(new ChainExecutionLog()); cache.Store(new ChainExecutionLog()); cache.Store(new ChainExecutionLog()); cache.Store(new ChainExecutionLog()); cache.Store(new ChainExecutionLog()); cache.Store(new ChainExecutionLog()); cache.RecentReports().Count().ShouldBe(9); cache.Store(new ChainExecutionLog()); cache.Store(new ChainExecutionLog()); cache.Store(new ChainExecutionLog()); cache.Store(new ChainExecutionLog()); cache.Store(new ChainExecutionLog()); cache.RecentReports().Count().ShouldBe(settings.MaxRequests); }
public void UpdateSetting(string key, object value) { DiagnosticsSettings diagnosticsSettings = ReadSettings(); diagnosticsSettings.SetSetting(key, value); SaveSettings(diagnosticsSettings); }
public SiteWithConfig() { Site = new Site(); SiteConfig = new SiteConfig(); AppSettings = new Hashtable(); DiagnosticsSettings = new DiagnosticsSettings(); Instances = new WebsiteInstance[0]; }
public RequestLogBuilder(ISystemTime systemTime, IHttpRequest request, ICurrentChain currentChain, DiagnosticsSettings settings) { _systemTime = systemTime; _request = request; _currentChain = currentChain; _settings = settings; }
public void add_role() { var settings = new DiagnosticsSettings(); settings.RestrictToRule("admin"); settings.AuthorizationRights.Single().ShouldBeOfType <AllowRole>() .Role.ShouldEqual("admin"); }
/// <summary> /// Gets the website configuration. /// </summary> /// <param name="name">The website name</param> /// <returns>The website configuration object</returns> public SiteWithConfig GetWebsiteConfiguration(string name) { Site website = GetWebsite(name); SiteConfig configuration = WebsiteChannel.GetSiteConfig(subscriptionId, website.WebSpace, website.Name); DiagnosticsSettings diagnosticsSettings = GetApplicationDiagnosticsSettings(website.Name); SiteWithConfig siteWithConfig = new SiteWithConfig(website, configuration, diagnosticsSettings); return(siteWithConfig); }
public void if_disabled_just_return_inner_app_func() { Func <IDictionary <string, object>, Task> inner = d => Task.Factory.StartNew(() => { }); var settings = new DiagnosticsSettings { TraceLevel = TraceLevel.None }; settings.WrapAppFunc(null, inner).ShouldBeSameAs(inner); }
private void SetApplicationDiagnosticsSettings( string name, WebsiteDiagnosticOutput output, bool setFlag, Dictionary <DiagnosticProperties, object> properties = null) { Site website = GetWebsite(name); using (HttpClient client = CreateHttpClient(website.Name)) { DiagnosticsSettings diagnosticsSettings = GetApplicationDiagnosticsSettings(website.Name); switch (output) { case WebsiteDiagnosticOutput.FileSystem: diagnosticsSettings.AzureDriveTraceEnabled = setFlag; diagnosticsSettings.AzureDriveTraceLevel = setFlag ? (LogEntryType)properties[DiagnosticProperties.LogLevel] : diagnosticsSettings.AzureDriveTraceLevel; break; case WebsiteDiagnosticOutput.StorageTable: diagnosticsSettings.AzureTableTraceEnabled = setFlag; if (setFlag) { const string storageTableName = "CLOUD_STORAGE_ACCOUNT"; string storageAccountName = (string)properties[DiagnosticProperties.StorageAccountName]; StorageService storageService = ServiceManagementChannel.GetStorageKeys( SubscriptionId, storageAccountName); StorageCredentials credentials = new StorageCredentials( storageAccountName, storageService.StorageServiceKeys.Primary); CloudStorageAccount cloudStorageAccount = new CloudStorageAccount(credentials, false); string connectionString = cloudStorageAccount.ToString(true); AddAppSetting(website.Name, storageTableName, connectionString); diagnosticsSettings.AzureTableTraceLevel = setFlag ? (LogEntryType)properties[DiagnosticProperties.LogLevel] : diagnosticsSettings.AzureTableTraceLevel; } break; default: throw new ArgumentException(); } JObject json = new JObject(); json[UriElements.AzureDriveTraceEnabled] = diagnosticsSettings.AzureDriveTraceEnabled; json[UriElements.AzureDriveTraceLevel] = JToken.FromObject(diagnosticsSettings.AzureDriveTraceLevel); json[UriElements.AzureTableTraceEnabled] = diagnosticsSettings.AzureTableTraceEnabled; json[UriElements.AzureTableTraceLevel] = JToken.FromObject(diagnosticsSettings.AzureTableTraceLevel); client.PostAsJsonAsync(UriElements.DiagnosticsSettings, json, Logger); } }
/// <summary> /// Gets the application diagnostics settings /// </summary> /// <param name="name">The website name</param> /// <returns>The website application diagnostics settings</returns> public DiagnosticsSettings GetApplicationDiagnosticsSettings(string name) { DiagnosticsSettings diagnosticsSettings = null; using (HttpClient client = CreateDeploymentHttpClient(name)) { diagnosticsSettings = client.GetJson <DiagnosticsSettings>(UriElements.DiagnosticsSettings, Logger); } return(diagnosticsSettings); }
public IActionResult Set(DiagnosticsSettings newSettings) { if (newSettings == null) { return(StatusCode(StatusCodes.Status400BadRequest)); } _settingsManager.UpdateSettings(newSettings); return(NoContent()); }
private void SaveSettings(DiagnosticsSettings diagnosticsSettings) { if (!FileSystemHelpers.FileExists(_path)) { FileSystemHelpers.EnsureDirectory(Path.GetDirectoryName(_path)); } string fileContent = JsonConvert.SerializeObject(diagnosticsSettings); FileSystemHelpers.WriteAllTextToFile(_path, fileContent); }
public HttpResponseMessage Set(DiagnosticsSettings newSettings) { if (newSettings == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } _settingsManager.UpdateSettings(newSettings); return(Request.CreateResponse(HttpStatusCode.NoContent)); }
public void UpdateSettings(DiagnosticsSettings settings) { DiagnosticsSettings diagnosticsSettings = ReadSettings(); foreach (KeyValuePair <string, object> pair in settings) { diagnosticsSettings.SetSetting(pair.Key, pair.Value); } SaveSettings(diagnosticsSettings); }
public bool DeleteSetting(string key) { DiagnosticsSettings diagnosticsSettings = ReadSettings(); if (diagnosticsSettings.RemoveSetting(key)) { SaveSettings(diagnosticsSettings); return(true); } return(false); }
public void can_override() { var settings = new DiagnosticsSettings(); settings.SetIfNone(TraceLevel.Verbose); settings.TraceLevel.ShouldEqual(TraceLevel.Verbose); settings.SetIfNone(TraceLevel.Production); settings.TraceLevel.ShouldEqual(TraceLevel.Verbose); }
public SiteWithConfig(Site site, SiteConfig siteConfig) { Site = site; SiteConfig = siteConfig; AppSettings = new Hashtable(); DiagnosticsSettings = new DiagnosticsSettings(); if (SiteConfig.AppSettings != null) { foreach (var setting in SiteConfig.AppSettings) { AppSettings[setting.Name] = setting.Value; } } }
private void SetApplicationDiagnosticsSettings( string name, WebsiteDiagnosticOutput output, bool setFlag, Dictionary <DiagnosticProperties, object> properties = null) { Site website = GetWebsite(name); using (HttpClient client = CreateDeploymentHttpClient(website.Name)) { DiagnosticsSettings diagnosticsSettings = GetApplicationDiagnosticsSettings(website.Name); switch (output) { case WebsiteDiagnosticOutput.FileSystem: diagnosticsSettings.AzureDriveTraceEnabled = setFlag; diagnosticsSettings.AzureDriveTraceLevel = setFlag ? (LogEntryType)properties[DiagnosticProperties.LogLevel] : diagnosticsSettings.AzureDriveTraceLevel; break; case WebsiteDiagnosticOutput.StorageTable: diagnosticsSettings.AzureTableTraceEnabled = setFlag; if (setFlag) { const string storageTableName = "CLOUD_STORAGE_ACCOUNT"; string storageAccountName = (string)properties[DiagnosticProperties.StorageAccountName]; string connectionString = cloudServiceClient.GetStorageServiceConnectionString( storageAccountName); SetConnectionString(website.Name, storageTableName, connectionString, DatabaseType.Custom); diagnosticsSettings.AzureTableTraceLevel = setFlag ? (LogEntryType)properties[DiagnosticProperties.LogLevel] : diagnosticsSettings.AzureTableTraceLevel; } break; default: throw new ArgumentException(); } JObject json = new JObject( new JProperty(UriElements.AzureDriveTraceEnabled, diagnosticsSettings.AzureDriveTraceEnabled), new JProperty(UriElements.AzureDriveTraceLevel, diagnosticsSettings.AzureDriveTraceLevel.ToString()), new JProperty(UriElements.AzureTableTraceEnabled, diagnosticsSettings.AzureTableTraceEnabled), new JProperty(UriElements.AzureTableTraceLevel, diagnosticsSettings.AzureTableTraceLevel.ToString())); client.PostJson(UriElements.DiagnosticsSettings, json, Logger); } }
private void WriteWebsite(Site websiteObject) { SiteConfig config = WebsitesClient.GetWebsiteConfiguration(websiteObject.Name); var diagnosticSettings = new DiagnosticsSettings(); try { diagnosticSettings = WebsitesClient.GetApplicationDiagnosticsSettings(websiteObject.Name); } catch { // Ignore exception and use default values } WriteObject(new SiteWithConfig(websiteObject, config, diagnosticSettings), false); }
private void GetByName() { Do(() => { Site websiteObject = WebsitesClient.GetWebsite(Name); SiteConfig config = WebsitesClient.GetWebsiteConfiguration(Name); Cache.AddSite(CurrentSubscription.SubscriptionId, websiteObject); var diagnosticSettings = new DiagnosticsSettings(); try { diagnosticSettings = WebsitesClient.GetApplicationDiagnosticsSettings(Name); } catch { // Ignore exception and use default values } WriteObject(new SiteWithConfig(websiteObject, config, diagnosticSettings), false); }); }
static TracingTestSettings() { TraceListener1 = new DefaultTraceListener { Name = "test_listener1", LogFileName = "test_listener1.log" }; TraceListener2 = new DefaultTraceListener { Name = "test_listener2", LogFileName = "test_listener2.log" }; TraceListeners = new[] { TraceListener1, TraceListener2 }; TraceSettings = new TraceSettings( AutoFlush, IndentSize, UseGlobalLock, TraceListeners); TraceSource1 = new TraceSource(TraceSource1Name); TraceSource2 = new TraceSource(TraceSource2Name); TraceSources = new TraceSource[] { TraceSource1, TraceSource2 }; DiagnosticsSettings = new DiagnosticsSettings(TraceSettings, TraceSources); Tracing.Settings = DiagnosticsSettings; // Immediately lock the Settings property by reading it. Tracing.Settings.Should().BeSameAs(DiagnosticsSettings); }
private IEnumerable<BehaviorChain> fromActions(DiagnosticsSettings settings, IEnumerable<ActionCall> calls) { foreach (var action in calls) { if (action.Method.Name.StartsWith("Visualize")) { var chain = new BehaviorChain(); chain.AddToEnd(action); chain.IsPartialOnly = true; chain.Tags.Add("Diagnostics"); yield return chain; } else { var diagnosticChain = new DiagnosticChain(action); diagnosticChain.Authorization.AddPolicies(settings.AuthorizationRights); yield return diagnosticChain; } } }
private IEnumerable <BehaviorChain> fromActions(DiagnosticsSettings settings, IEnumerable <ActionCall> calls) { foreach (var action in calls) { if (action.Method.Name.StartsWith("Visualize")) { var chain = new BehaviorChain(); chain.AddToEnd(action); chain.IsPartialOnly = true; chain.Tags.Add("Diagnostics"); yield return(chain); } else { var diagnosticChain = new DiagnosticChain(action); diagnosticChain.Authorization.AddPolicies(settings.AuthorizationRights); yield return(diagnosticChain); } } }
public object GetSetting(string key) { DiagnosticsSettings settings = ReadSettings(); return(settings.GetSetting(key)); }
public SiteWithConfig(Site site, SiteConfig siteConfig, DiagnosticsSettings diagnosticsSettings) : this(site, siteConfig) { DiagnosticsSettings = diagnosticsSettings; }
public IAsyncResult BeginSetDiagnosticsSettings(DiagnosticsSettings diagnosticsSettings, AsyncCallback callback, object state) { throw new NotImplementedException(); }
public SiteWithConfig(Site site, SiteConfig siteConfig, DiagnosticsSettings diagnosticsSettings, WebsiteInstance[] instances) : this(site, siteConfig) { DiagnosticsSettings = diagnosticsSettings; Instances = instances; }
public RequestHistoryCache(DiagnosticsSettings settings) { _settings = settings; }
public ChainExecutionHistory(DiagnosticsSettings settings) { _settings = settings; }
public void BasicReadWriteTests() { BuildFileSystemMock((Mock <IFileSystem> fileSystemMock) => { FileSystemHelpers.Instance = fileSystemMock.Object; var mockTracer = new Mock <ITracer>(); var manager = new DiagnosticsSettingsManager(@"x:\test.json", mockTracer.Object); // should see default value DiagnosticsSettings settings = manager.GetSettings(); Assert.Equal(false, settings.AzureDriveEnabled); Assert.Equal(TraceEventType.Error, settings.AzureDriveTraceLevel); Assert.Equal(false, settings.AzureTableEnabled); Assert.Equal(TraceEventType.Error, settings.AzureTableTraceLevel); Assert.Equal(false, settings.AzureBlobEnabled); Assert.Equal(TraceEventType.Error, settings.AzureBlobTraceLevel); // update with good value manager.UpdateSetting(DiagnosticsSettings.AzureDriveEnabledKey, true); manager.UpdateSetting(DiagnosticsSettings.AzureDriveTraceLevelKey, TraceEventType.Verbose); manager.UpdateSetting(DiagnosticsSettings.AzureTableEnabledKey, true); manager.UpdateSetting(DiagnosticsSettings.AzureTableTraceLevelKey, TraceEventType.Warning); manager.UpdateSetting(DiagnosticsSettings.AzureBlobEnabledKey, true); manager.UpdateSetting(DiagnosticsSettings.AzureBlobTraceLevelKey, TraceEventType.Information); settings = manager.GetSettings(); Assert.Equal(true, settings.AzureDriveEnabled); Assert.Equal(TraceEventType.Verbose, settings.AzureDriveTraceLevel); Assert.Equal(true, settings.AzureTableEnabled); Assert.Equal(TraceEventType.Warning, settings.AzureTableTraceLevel); Assert.Equal(true, settings.AzureBlobEnabled); Assert.Equal(TraceEventType.Information, settings.AzureBlobTraceLevel); // number and string should be good too manager.UpdateSetting(DiagnosticsSettings.AzureDriveTraceLevelKey, 2); settings = manager.GetSettings(); Assert.Equal(TraceEventType.Error, settings.AzureDriveTraceLevel); JsonSerializationException exception = null; try { manager.UpdateSetting(DiagnosticsSettings.AzureTableTraceLevelKey, "Error"); } catch (JsonSerializationException ex) { exception = ex; } Assert.NotNull(exception); Assert.Equal("Error getting value from 'AzureTableTraceLevel' on 'Kudu.Contracts.Settings.DiagnosticsSettings'.", exception.Message); try { manager.UpdateSetting(DiagnosticsSettings.AzureTableTraceLevelKey, "8"); } catch (JsonSerializationException ex) { exception = ex; } Assert.Equal("Error getting value from 'AzureTableTraceLevel' on 'Kudu.Contracts.Settings.DiagnosticsSettings'.", exception.Message); try { manager.UpdateSetting(DiagnosticsSettings.AzureTableTraceLevelKey, "foo"); } catch (JsonSerializationException ex) { exception = ex; } Assert.Equal("Error getting value from 'AzureTableTraceLevel' on 'Kudu.Contracts.Settings.DiagnosticsSettings'.", exception.Message); try { manager.UpdateSetting(DiagnosticsSettings.AzureBlobTraceLevelKey, 999); } catch (JsonSerializationException ex) { exception = ex; } Assert.Equal(string.Format(CultureInfo.InvariantCulture, "Error converting value '{0}'", 999), exception.Message); settings = manager.GetSettings(); Assert.Equal(true, settings.AzureDriveEnabled); Assert.Equal(TraceEventType.Error, settings.AzureDriveTraceLevel); Assert.Equal(true, settings.AzureTableEnabled); Assert.Equal(TraceEventType.Warning, settings.AzureTableTraceLevel); Assert.Equal(true, settings.AzureBlobEnabled); Assert.Equal(TraceEventType.Information, settings.AzureBlobTraceLevel); // with corrupted content, kudu will auto-correct content and reset to default value manager = new DiagnosticsSettingsManager(@"x:\bad-content.json", mockTracer.Object); settings = manager.GetSettings(); Assert.Equal(false, settings.AzureDriveEnabled); Assert.Equal(TraceEventType.Error, settings.AzureDriveTraceLevel); Assert.Equal(false, settings.AzureTableEnabled); Assert.Equal(TraceEventType.Error, settings.AzureTableTraceLevel); Assert.Equal(false, settings.AzureBlobEnabled); Assert.Equal(TraceEventType.Error, settings.AzureBlobTraceLevel); }); }