diff --git a/Geodatenbezug.Test/GeodiensteApiTest.cs b/Geodatenbezug.Test/GeodiensteApiTest.cs index a6e45a2..9b30049 100644 --- a/Geodatenbezug.Test/GeodiensteApiTest.cs +++ b/Geodatenbezug.Test/GeodiensteApiTest.cs @@ -99,7 +99,7 @@ public async Task StartExportAsync() new () { Code = HttpStatusCode.OK, Content = "{\"info\":\"Data export successfully started. Call the URL of status_url to get the current status of the export.\"}" }, ]); httpClientFactoryMock.Setup(cf => cf.CreateClient(It.IsAny())).Returns(httpTestMessageHandler.ToHttpClient()).Verifiable(); - loggerMock.Setup(LogLevel.Information, "Starte den Datenexport für Perimeter LN- und Sömmerungsflächen (ZG) mit https://geodienste.ch/downloads/lwb_perimeter_ln_sf/1234567890/export.json", Times.Once()); + loggerMock.Setup(LogLevel.Information, "Starte den Datenexport mit https://geodienste.ch/downloads/lwb_perimeter_ln_sf/1234567890/export.json", Times.Once()); loggerMock.Setup(LogLevel.Information, "Es läuft gerade ein anderer Export. Versuche es in 1 Minute erneut.", Times.Once()); var result = await CreateGeodiensteApiMock().StartExportAsync(topic); @@ -124,7 +124,7 @@ public async Task StartExportAsyncTimeout() new () { Code = HttpStatusCode.NotFound, Content = "{\"error\":\"Cannot start data export because there is another data export pending\"}" }, ]); httpClientFactoryMock.Setup(cf => cf.CreateClient(It.IsAny())).Returns(httpTestMessageHandler.ToHttpClient()).Verifiable(); - loggerMock.Setup(LogLevel.Information, "Starte den Datenexport für Perimeter LN- und Sömmerungsflächen (ZG) mit https://geodienste.ch/downloads/lwb_perimeter_ln_sf/1234567890/export.json", Times.Once()); + loggerMock.Setup(LogLevel.Information, "Starte den Datenexport mit https://geodienste.ch/downloads/lwb_perimeter_ln_sf/1234567890/export.json", Times.Once()); loggerMock.Setup(LogLevel.Information, "Es läuft gerade ein anderer Export. Versuche es in 1 Minute erneut.", Times.Exactly(9)); loggerMock.Setup(LogLevel.Error, "Es läuft bereits ein anderer Export. Zeitlimite überschritten.", Times.Once()); @@ -140,7 +140,7 @@ public async Task StartExportAsyncFails() new () { Code = HttpStatusCode.Unauthorized }, ]); httpClientFactoryMock.Setup(cf => cf.CreateClient(It.IsAny())).Returns(httpTestMessageHandler.ToHttpClient()).Verifiable(); - loggerMock.Setup(LogLevel.Information, "Starte den Datenexport für Perimeter LN- und Sömmerungsflächen (ZG) mit https://geodienste.ch/downloads/lwb_perimeter_ln_sf/1234567890/export.json", Times.Once()); + loggerMock.Setup(LogLevel.Information, "Starte den Datenexport mit https://geodienste.ch/downloads/lwb_perimeter_ln_sf/1234567890/export.json", Times.Once()); var result = await CreateGeodiensteApiMock().StartExportAsync(topic); Assert.AreEqual(HttpStatusCode.Unauthorized, result.StatusCode); @@ -171,7 +171,7 @@ public async Task CheckExportStatusAsync() new () { Code = HttpStatusCode.OK, Content = "{\"status\":\"success\", \"info\":\"Data ready to be downloaded. Provide your credentials to download the data.\", \"download_url\":\"test.com/data.zip\", \"exported_at\":\"2022-03-24T09:31:05.508\"}" }, ]); httpClientFactoryMock.Setup(cf => cf.CreateClient(It.IsAny())).Returns(httpTestMessageHandler.ToHttpClient()).Verifiable(); - loggerMock.Setup(LogLevel.Information, "Prüfe den Status des Datenexports für Perimeter LN- und Sömmerungsflächen (ZG) mit https://geodienste.ch/downloads/lwb_perimeter_ln_sf/1234567890/status.json", Times.Once()); + loggerMock.Setup(LogLevel.Information, "Prüfe den Status des Datenexports mit https://geodienste.ch/downloads/lwb_perimeter_ln_sf/1234567890/status.json", Times.Once()); loggerMock.Setup(LogLevel.Information, "Export ist in der Warteschlange. Versuche es in 1 Minute erneut.", Times.Once()); loggerMock.Setup(LogLevel.Information, "Export ist in Bearbeitung. Versuche es in 1 Minute erneut.", Times.Once()); @@ -198,7 +198,7 @@ public async Task CheckExportStatusAsyncTimeout() new () { Code = HttpStatusCode.OK, Content = "{\"status\":\"working\",\"info\":\"Try again later.\",\"download_url\":null,\"exported_at\":null}" }, ]); httpClientFactoryMock.Setup(cf => cf.CreateClient(It.IsAny())).Returns(httpTestMessageHandler.ToHttpClient()).Verifiable(); - loggerMock.Setup(LogLevel.Information, "Prüfe den Status des Datenexports für Perimeter LN- und Sömmerungsflächen (ZG) mit https://geodienste.ch/downloads/lwb_perimeter_ln_sf/1234567890/status.json", Times.Once()); + loggerMock.Setup(LogLevel.Information, "Prüfe den Status des Datenexports mit https://geodienste.ch/downloads/lwb_perimeter_ln_sf/1234567890/status.json", Times.Once()); loggerMock.Setup(LogLevel.Information, "Export ist in der Warteschlange. Versuche es in 1 Minute erneut.", Times.Exactly(7)); loggerMock.Setup(LogLevel.Information, "Export ist in Bearbeitung. Versuche es in 1 Minute erneut.", Times.Exactly(2)); loggerMock.Setup(LogLevel.Error, "Zeitlimite überschritten. Status ist in Bearbeitung", Times.Once()); @@ -216,7 +216,7 @@ public async Task CheckExportStatusAsyncFails() new () { Code = HttpStatusCode.Unauthorized }, ]); httpClientFactoryMock.Setup(cf => cf.CreateClient(It.IsAny())).Returns(httpTestMessageHandler.ToHttpClient()).Verifiable(); - loggerMock.Setup(LogLevel.Information, "Prüfe den Status des Datenexports für Perimeter LN- und Sömmerungsflächen (ZG) mit https://geodienste.ch/downloads/lwb_perimeter_ln_sf/1234567890/status.json", Times.Once()); + loggerMock.Setup(LogLevel.Information, "Prüfe den Status des Datenexports mit https://geodienste.ch/downloads/lwb_perimeter_ln_sf/1234567890/status.json", Times.Once()); var result = await CreateGeodiensteApiMock().CheckExportStatusAsync(topic); Assert.AreEqual(HttpStatusCode.Unauthorized, result.StatusCode); diff --git a/Geodatenbezug.Test/ProcessingTest.cs b/Geodatenbezug.Test/ProcessingTest.cs index 3ef29bf..e2d8fe0 100644 --- a/Geodatenbezug.Test/ProcessingTest.cs +++ b/Geodatenbezug.Test/ProcessingTest.cs @@ -71,10 +71,10 @@ public async Task GetTopicsToUpdate() ]); loggerMock.Setup(LogLevel.Information, "Laden der Themen..."); - loggerMock.Setup(LogLevel.Information, $"Thema Perimeter LN- und Sömmerungsflächen (SH) wurde am {datestring_delta4.ToString("G", CultureInfo.GetCultureInfo("de-CH"))} aktualisiert und wird verarbeitet"); - loggerMock.Setup(LogLevel.Information, $"Thema Perimeter LN- und Sömmerungsflächen (ZG) wurde am {datestring_delta23.ToString("G", CultureInfo.GetCultureInfo("de-CH"))} aktualisiert und wird verarbeitet"); - loggerMock.Setup(LogLevel.Information, $"Thema Rebbaukataster (SH) wurde seit {datestring_delta30.ToString("G", CultureInfo.GetCultureInfo("de-CH"))} nicht aktualisiert"); - loggerMock.Setup(LogLevel.Information, "Thema Rebbaukataster (ZG) ist nicht verfügbar"); + loggerMock.Setup(LogLevel.Information, $"Perimeter LN- und Sömmerungsflächen (SH): Thema wurde am {datestring_delta4.ToString("G", CultureInfo.GetCultureInfo("de-CH"))} aktualisiert und wird verarbeitet"); + loggerMock.Setup(LogLevel.Information, $"Perimeter LN- und Sömmerungsflächen (ZG): Thema wurde am {datestring_delta23.ToString("G", CultureInfo.GetCultureInfo("de-CH"))} aktualisiert und wird verarbeitet"); + loggerMock.Setup(LogLevel.Information, $"Rebbaukataster (SH): Thema wurde seit {datestring_delta30.ToString("G", CultureInfo.GetCultureInfo("de-CH"))} nicht aktualisiert"); + loggerMock.Setup(LogLevel.Information, "Rebbaukataster (ZG): Thema ist nicht verfügbar"); loggerMock.Setup(LogLevel.Information, "2 Themen werden prozessiert"); azureStorageMock.SetupSequence(storage => storage.GetLastProcessed(It.IsAny())) diff --git a/Geodatenbezug.Test/Processors/BewirtschaftungseinheitProcessorTest.cs b/Geodatenbezug.Test/Processors/BewirtschaftungseinheitProcessorTest.cs index 1e49960..b3d02a0 100644 --- a/Geodatenbezug.Test/Processors/BewirtschaftungseinheitProcessorTest.cs +++ b/Geodatenbezug.Test/Processors/BewirtschaftungseinheitProcessorTest.cs @@ -40,7 +40,7 @@ public void Cleanup() [TestMethod] public async Task RunGdalProcessingAsync() { - loggerMock.Setup(LogLevel.Information, $"Starte GDAL-Prozessierung von Thema {topic.TopicTitle} ({topic.Canton})"); + loggerMock.Setup(LogLevel.Information, $"Starte GDAL-Prozessierung"); processor.InputDataPath = "testdata\\lwb_bewirtschaftungseinheit_v2_0_lv95_NE_202404191123.gpkg"; await processor.RunGdalProcessingAsync(); diff --git a/Geodatenbezug.Test/Processors/BiodiversitaetsfoerderflaechenProcessorTest.cs b/Geodatenbezug.Test/Processors/BiodiversitaetsfoerderflaechenProcessorTest.cs index c86993f..8c4b98f 100644 --- a/Geodatenbezug.Test/Processors/BiodiversitaetsfoerderflaechenProcessorTest.cs +++ b/Geodatenbezug.Test/Processors/BiodiversitaetsfoerderflaechenProcessorTest.cs @@ -40,7 +40,7 @@ public void Cleanup() [TestMethod] public async Task RunGdalProcessingAsync() { - loggerMock.Setup(LogLevel.Information, $"Starte GDAL-Prozessierung von Thema {topic.TopicTitle} ({topic.Canton})"); + loggerMock.Setup(LogLevel.Information, $"Starte GDAL-Prozessierung"); processor.InputDataPath = "testdata\\lwb_biodiversitaetsfoerderflaechen_v2_0_lv95_NE_202404191123.gpkg"; await processor.RunGdalProcessingAsync(); diff --git a/Geodatenbezug.Test/Processors/NutzungsflaechenProcessorTest.cs b/Geodatenbezug.Test/Processors/NutzungsflaechenProcessorTest.cs index fbe0e38..99119da 100644 --- a/Geodatenbezug.Test/Processors/NutzungsflaechenProcessorTest.cs +++ b/Geodatenbezug.Test/Processors/NutzungsflaechenProcessorTest.cs @@ -59,9 +59,8 @@ public async Task PrepareDataAsync() .Setup(api => api.DownloadExportAsync(It.IsAny(), It.IsAny())) .ReturnsAsync("downloadedFilePath"); - loggerMock.Setup(LogLevel.Information, $"Bereite Daten für die Prozessierung von {topic.TopicTitle} ({topic.Canton}) vor"); - loggerMock.Setup(LogLevel.Information, $"Exportiere {topic.TopicTitle} ({topic.Canton})"); - loggerMock.Setup(LogLevel.Information, $"Exportiere {bewirtschaftungseinheitTopic.TopicTitle} ({bewirtschaftungseinheitTopic.Canton})"); + loggerMock.Setup(LogLevel.Information, $"Bereite Daten für die Prozessierung vor"); + loggerMock.Setup(LogLevel.Information, $"Export", Times.Exactly(2)); await processor.PrepareDataAsync(); geodiensteApiMock.Verify(api => api.StartExportAsync(topic), Times.Once); @@ -73,7 +72,7 @@ public async Task PrepareDataAsync() [TestMethod] public async Task RunGdalProcessingAsync() { - loggerMock.Setup(LogLevel.Information, $"Starte GDAL-Prozessierung von Thema {topic.TopicTitle} ({topic.Canton})"); + loggerMock.Setup(LogLevel.Information, $"Starte GDAL-Prozessierung"); loggerMock.Setup(LogLevel.Information, $"Lade Nutzungsart-Katalog von https://models.geo.admin.ch/BLW/LWB_Nutzungsflaechen_Kataloge_V2_0.xml"); processor.InputDataPath = "testdata\\lwb_nutzungsflaechen_v2_0_lv95_NE_202404191123.gpkg"; diff --git a/Geodatenbezug.Test/Processors/PerimeterLnSfProcessorTest.cs b/Geodatenbezug.Test/Processors/PerimeterLnSfProcessorTest.cs index da7be65..d77049b 100644 --- a/Geodatenbezug.Test/Processors/PerimeterLnSfProcessorTest.cs +++ b/Geodatenbezug.Test/Processors/PerimeterLnSfProcessorTest.cs @@ -40,7 +40,7 @@ public void Cleanup() [TestMethod] public async Task RunGdalProcessingAsync() { - loggerMock.Setup(LogLevel.Information, $"Starte GDAL-Prozessierung von Thema {topic.TopicTitle} ({topic.Canton})"); + loggerMock.Setup(LogLevel.Information, $"Starte GDAL-Prozessierung"); processor.InputDataPath = "testdata\\lwb_perimeter_ln_sf_v2_0_lv95_NE_202404191123.gpkg"; await processor.RunGdalProcessingAsync(); diff --git a/Geodatenbezug.Test/Processors/PerimeterTerrassenrebenProcessorTest.cs b/Geodatenbezug.Test/Processors/PerimeterTerrassenrebenProcessorTest.cs index 497afff..7c839ae 100644 --- a/Geodatenbezug.Test/Processors/PerimeterTerrassenrebenProcessorTest.cs +++ b/Geodatenbezug.Test/Processors/PerimeterTerrassenrebenProcessorTest.cs @@ -40,7 +40,7 @@ public void Cleanup() [TestMethod] public async Task RunGdalProcessingAsync() { - loggerMock.Setup(LogLevel.Information, $"Starte GDAL-Prozessierung von Thema {topic.TopicTitle} ({topic.Canton})"); + loggerMock.Setup(LogLevel.Information, $"Starte GDAL-Prozessierung"); processor.InputDataPath = "testdata\\lwb_perimeter_terrassenreben_v2_0_lv95_NE_202404191123.gpkg"; await processor.RunGdalProcessingAsync(); diff --git a/Geodatenbezug.Test/Processors/RebbaukatasterProcessorTest.cs b/Geodatenbezug.Test/Processors/RebbaukatasterProcessorTest.cs index f4db7e1..b985dbc 100644 --- a/Geodatenbezug.Test/Processors/RebbaukatasterProcessorTest.cs +++ b/Geodatenbezug.Test/Processors/RebbaukatasterProcessorTest.cs @@ -40,7 +40,7 @@ public void Cleanup() [TestMethod] public async Task RunGdalProcessingAsync() { - loggerMock.Setup(LogLevel.Information, $"Starte GDAL-Prozessierung von Thema {topic.TopicTitle} ({topic.Canton})"); + loggerMock.Setup(LogLevel.Information, $"Starte GDAL-Prozessierung"); processor.InputDataPath = "testdata\\lwb_rebbaukataster_v2_0_lv95_NE_202404191123.gpkg"; await processor.RunGdalProcessingAsync(); diff --git a/Geodatenbezug.Test/Processors/TopicProcessorTest.cs b/Geodatenbezug.Test/Processors/TopicProcessorTest.cs index 7d71b1f..4153318 100644 --- a/Geodatenbezug.Test/Processors/TopicProcessorTest.cs +++ b/Geodatenbezug.Test/Processors/TopicProcessorTest.cs @@ -57,7 +57,7 @@ public async Task ExportTopic() geodiensteApiMock .Setup(api => api.CheckExportStatusAsync(It.IsAny())) .ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent("{\"status\":\"success\", \"info\":\"Data ready to be downloaded. Provide your credentials to download the data.\", \"download_url\":\"test.com/data.zip\", \"exported_at\":\"2022-03-24T09:31:05.508\"}"), }); - loggerMock.Setup(LogLevel.Information, $"Exportiere {topic.TopicTitle} ({topic.Canton})"); + loggerMock.Setup(LogLevel.Information, $"Export"); var result = await Processor.ExportTopicAsync(topic); @@ -82,7 +82,7 @@ public async Task ExportTopicOnlyOneExportIn24h() geodiensteApiMock .Setup(api => api.CheckExportStatusAsync(It.IsAny())) .ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent("{\"status\":\"success\", \"info\":\"Data ready to be downloaded. Provide your credentials to download the data.\", \"download_url\":\"test.com/data.zip\", \"exported_at\":\"2022-03-24T09:31:05.508\"}"), }); - loggerMock.Setup(LogLevel.Information, $"Exportiere {topic.TopicTitle} ({topic.Canton})"); + loggerMock.Setup(LogLevel.Information, $"Export"); var result = await Processor.ExportTopicAsync(topic); @@ -106,8 +106,8 @@ public async Task ExportTopicStartExportFails() geodiensteApiMock .Setup(api => api.StartExportAsync(It.IsAny())) .ReturnsAsync(new HttpResponseMessage(HttpStatusCode.NotFound) { Content = new StringContent("{\"error\":\"Data export information not found. Invalid token?\"}"), }); - loggerMock.Setup(LogLevel.Information, $"Exportiere {topic.TopicTitle} ({topic.Canton})"); - loggerMock.Setup(LogLevel.Error, $"Fehler beim Starten des Exports für Thema {topic.TopicTitle} ({topic.Canton}): {HttpStatusCode.NotFound} - Data export information not found. Invalid token?"); + loggerMock.Setup(LogLevel.Information, $"Export"); + loggerMock.Setup(LogLevel.Error, $"Fehler beim Starten des Exports: {HttpStatusCode.NotFound} - Data export information not found. Invalid token?"); await Assert.ThrowsExceptionAsync(async () => await Processor.ExportTopicAsync(topic), "Export failed"); Assert.AreEqual(processingResult.Code, Processor.ProcessingResult.Code); @@ -134,8 +134,8 @@ public async Task ExportTopicCheckExportStatusFailed() geodiensteApiMock .Setup(api => api.CheckExportStatusAsync(It.IsAny())) .ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent("{\"status\":\"failed\", \"info\":\"An unexpected error occurred. Please try again by starting a new data export.\"}"), }); - loggerMock.Setup(LogLevel.Information, $"Exportiere {topic.TopicTitle} ({topic.Canton})"); - loggerMock.Setup(LogLevel.Error, $"Fehler bei der Statusabfrage des Datenexports für Thema {topic.TopicTitle} ({topic.Canton}): An unexpected error occurred. Please try again by starting a new data export."); + loggerMock.Setup(LogLevel.Information, $"Export"); + loggerMock.Setup(LogLevel.Error, $"Fehler bei der Statusabfrage des Datenexports: An unexpected error occurred. Please try again by starting a new data export."); await Assert.ThrowsExceptionAsync(async () => await Processor.ExportTopicAsync(topic), "Export failed"); Assert.AreEqual(processingResult.Code, Processor.ProcessingResult.Code); @@ -163,8 +163,8 @@ public async Task ExportTopicCheckExportStatusError() geodiensteApiMock .Setup(api => api.CheckExportStatusAsync(It.IsAny())) .ReturnsAsync(new HttpResponseMessage(HttpStatusCode.NotFound) { Content = new StringContent("{\"error\":\"Data export information not found. Invalid token?\"}"), }); - loggerMock.Setup(LogLevel.Information, $"Exportiere {topic.TopicTitle} ({topic.Canton})"); - loggerMock.Setup(LogLevel.Error, $"Fehler bei der Statusabfrage des Datenexports für Thema {topic.TopicTitle} ({topic.Canton}): {HttpStatusCode.NotFound} - Data export information not found. Invalid token?"); + loggerMock.Setup(LogLevel.Information, $"Export"); + loggerMock.Setup(LogLevel.Error, $"Fehler bei der Statusabfrage des Datenexports: {HttpStatusCode.NotFound} - Data export information not found. Invalid token?"); await Assert.ThrowsExceptionAsync(async () => await Processor.ExportTopicAsync(topic), "Export failed"); Assert.AreEqual(processingResult.Code, Processor.ProcessingResult.Code); @@ -189,8 +189,8 @@ public async Task PrepareDataFails() processorMock.Setup(p => p.PrepareDataAsync()) .Throws(new InvalidOperationException("Something happened", new InvalidOperationException("Inner exception details"))); - loggerMock.Setup(LogLevel.Information, $"Verarbeite Thema {topic.TopicTitle} ({topic.Canton})"); - loggerMock.Setup(LogLevel.Error, $"Fehler beim Verarbeiten des Themas {topic.TopicTitle} ({topic.Canton}): Something happened"); + loggerMock.Setup(LogLevel.Information, $"Verarbeite Thema"); + loggerMock.Setup(LogLevel.Error, $"Fehler beim Verarbeiten des Themas: Something happened"); await Processor.ProcessAsync(); Assert.AreEqual(processingResult.Code, Processor.ProcessingResult.Code); diff --git a/Geodatenbezug/AzureStorage.cs b/Geodatenbezug/AzureStorage.cs index 4e6799c..b22d12d 100644 --- a/Geodatenbezug/AzureStorage.cs +++ b/Geodatenbezug/AzureStorage.cs @@ -42,7 +42,7 @@ protected string ConnectionString /// public async Task GetLastProcessed(Topic topic) { - logger.LogInformation($"Frage letzte Prozessierung des Themas {topic.TopicTitle} ({topic.Canton}) ab"); + logger.LogInformation($"{topic.TopicTitle} ({topic.Canton}): Frage letzte Prozessierung des Themas ab"); var containerClient = new BlobServiceClient(ConnectionString).GetBlobContainerClient(StorageContainerName); var creationDates = new List(); @@ -66,7 +66,7 @@ protected string ConnectionString /// public async Task UploadFileAsync(string storageFilePath, string localFilePath) { - logger.LogInformation($"Lade Datei {localFilePath} in den Azure Storage hoch..."); + logger.LogInformation($"Lade Datei {localFilePath} in den Azure Storage hoch"); var containerClient = new BlobServiceClient(ConnectionString).GetBlobContainerClient(StorageContainerName); var blobClient = containerClient.GetBlobClient(storageFilePath); diff --git a/Geodatenbezug/GeodiensteApi.cs b/Geodatenbezug/GeodiensteApi.cs index 2a1fa26..005dfa7 100644 --- a/Geodatenbezug/GeodiensteApi.cs +++ b/Geodatenbezug/GeodiensteApi.cs @@ -49,7 +49,7 @@ public async Task StartExportAsync(Topic topic) { var token = GetToken(topic.BaseTopic, topic.Canton); var url = $"{GeodiensteBaseUrl}/downloads/{topic.BaseTopic}/{token}/export.json"; - logger.LogInformation($"Starte den Datenexport für {topic.TopicTitle} ({topic.Canton}) mit {url}"); + logger.LogInformation($"{topic.TopicTitle} ({topic.Canton}): Starte den Datenexport mit {url}"); using var httpClient = httpClientFactory.CreateClient(nameof(GeodiensteApi)); var retryPolicy = Policy @@ -90,7 +90,7 @@ public async Task CheckExportStatusAsync(Topic topic) { var token = GetToken(topic.BaseTopic, topic.Canton); var url = $"{GeodiensteBaseUrl}/downloads/{topic.BaseTopic}/{token}/status.json"; - logger.LogInformation($"Prüfe den Status des Datenexports für {topic.TopicTitle} ({topic.Canton}) mit {url}"); + logger.LogInformation($"{topic.TopicTitle} ({topic.Canton}): Prüfe den Status des Datenexports mit {url}"); using var httpClient = httpClientFactory.CreateClient(nameof(GeodiensteApi)); var retryPolicy = Policy diff --git a/Geodatenbezug/Processor.cs b/Geodatenbezug/Processor.cs index 2d17cf6..0bc04ee 100644 --- a/Geodatenbezug/Processor.cs +++ b/Geodatenbezug/Processor.cs @@ -28,17 +28,17 @@ public async Task> GetTopicsToProcess() var lastProcessed = await azureStorage.GetLastProcessed(topic).ConfigureAwait(false); if (lastProcessed == null || lastProcessed < topic.UpdatedAt.Value) { - logger.LogInformation($"Thema {topic.TopicTitle} ({topic.Canton}) wurde am {updatedAtString} aktualisiert und wird verarbeitet"); + logger.LogInformation($"{topic.TopicTitle} ({topic.Canton}): Thema wurde am {updatedAtString} aktualisiert und wird verarbeitet"); topicsToProcess.Add(topic); } else { - logger.LogInformation($"Thema {topic.TopicTitle} ({topic.Canton}) wurde seit {updatedAtString} nicht aktualisiert"); + logger.LogInformation($"{topic.TopicTitle} ({topic.Canton}): Thema wurde seit {updatedAtString} nicht aktualisiert"); } } else { - logger.LogInformation($"Thema {topic.TopicTitle} ({topic.Canton}) ist nicht verfügbar"); + logger.LogInformation($"{topic.TopicTitle} ({topic.Canton}): Thema ist nicht verfügbar"); } } diff --git a/Geodatenbezug/Processors/NutzungsflaechenProcessor.cs b/Geodatenbezug/Processors/NutzungsflaechenProcessor.cs index bd3343c..89c5d85 100644 --- a/Geodatenbezug/Processors/NutzungsflaechenProcessor.cs +++ b/Geodatenbezug/Processors/NutzungsflaechenProcessor.cs @@ -26,7 +26,7 @@ public class NutzungsflaechenProcessor(IGeodiensteApi geodiensteApi, IAzureStora /// protected internal override async Task PrepareDataAsync() { - Logger.LogInformation($"Bereite Daten für die Prozessierung von {Topic.TopicTitle} ({Topic.Canton}) vor"); + Logger.LogInformation($"{Topic.TopicTitle} ({Topic.Canton}): Bereite Daten für die Prozessierung vor"); var exportInputTopic = PrepareTopic(Topic); diff --git a/Geodatenbezug/Processors/TopicProcessor.cs b/Geodatenbezug/Processors/TopicProcessor.cs index 7863370..c5b5769 100644 --- a/Geodatenbezug/Processors/TopicProcessor.cs +++ b/Geodatenbezug/Processors/TopicProcessor.cs @@ -68,13 +68,13 @@ public async Task ProcessAsync() { try { - logger.LogInformation($"Verarbeite Thema {topic.TopicTitle} ({topic.Canton})"); + logger.LogInformation($"{topic.TopicTitle} ({topic.Canton}): Verarbeite Thema"); await PrepareDataAsync().ConfigureAwait(false); await RunGdalProcessingAsync().ConfigureAwait(false); - logger.LogInformation($"Zippe Resultate für {topic.TopicTitle} ({topic.Canton})"); + logger.LogInformation($"{topic.TopicTitle} ({topic.Canton}): Zippe Resultate"); var zipFileName = $"{Path.GetFileName(dataDirectory)}_{Topic.Canton}_{DateTime.Now.ToString("yyyyMMddHHmm", new CultureInfo("de-CH"))}.zip"; var zipFileDirectory = Path.GetDirectoryName(DataDirectory) ?? throw new InvalidOperationException("Invalid data directory"); var zipFullFilePath = Path.Combine(zipFileDirectory, zipFileName); @@ -85,7 +85,7 @@ public async Task ProcessAsync() processingResult.Reason = "Success"; processingResult.Info = "Data processed successfully"; - logger.LogInformation($"Thema {topic.TopicTitle} ({topic.Canton}) erfolgreich verarbeitet. DownloadUrl: {processingResult.DownloadUrl}"); + logger.LogInformation($"{topic.TopicTitle} ({topic.Canton}): Thema erfolgreich verarbeitet. DownloadUrl: {processingResult.DownloadUrl}"); File.Delete(zipFullFilePath); Directory.Delete(DataDirectory, true); @@ -94,7 +94,7 @@ public async Task ProcessAsync() { if (processingResult.Code == HttpStatusCode.Processing) { - logger.LogError(ex, $"Fehler beim Verarbeiten des Themas {topic.TopicTitle} ({topic.Canton}): {ex.Message}"); + logger.LogError(ex, $"{topic.TopicTitle} ({topic.Canton}): Fehler beim Verarbeiten des Themas: {ex.Message}"); processingResult.Code = HttpStatusCode.InternalServerError; processingResult.Reason = ex.Message; @@ -110,7 +110,7 @@ public async Task ProcessAsync() /// protected internal virtual async Task PrepareDataAsync() { - logger.LogInformation($"Bereite Daten für die Prozessierung von {topic.TopicTitle} ({topic.Canton}) vor"); + logger.LogInformation($"{topic.TopicTitle} ({topic.Canton}): Bereite Daten für die Prozessierung vor"); var downloadUrl = await ExportTopicAsync(topic).ConfigureAwait(false); InputDataPath = await GeodiensteApi.DownloadExportAsync(downloadUrl, DataDirectory).ConfigureAwait(false); } @@ -120,7 +120,7 @@ protected internal virtual async Task PrepareDataAsync() /// protected internal async Task ExportTopicAsync(Topic topic) { - logger.LogInformation($"Exportiere {topic.TopicTitle} ({topic.Canton})"); + logger.LogInformation($"{topic.TopicTitle} ({topic.Canton}): Export"); var exportResponse = await GeodiensteApi.StartExportAsync(topic).ConfigureAwait(false); if (!exportResponse.IsSuccessStatusCode) @@ -130,7 +130,7 @@ protected internal async Task ExportTopicAsync(Topic topic) if (!errorMessage.Error.Contains(GeodiensteExportError.OnlyOneExport, StringComparison.CurrentCulture)) { var errorString = exportResponse.StatusCode == HttpStatusCode.Unauthorized ? exportResponse.ReasonPhrase : errorMessage.Error; - logger.LogError($"Fehler beim Starten des Exports für Thema {topic.TopicTitle} ({topic.Canton}): {exportResponse.StatusCode} - {errorString}"); + logger.LogError($"{topic.TopicTitle} ({topic.Canton}): Fehler beim Starten des Exports: {exportResponse.StatusCode} - {errorString}"); processingResult.Code = exportResponse.StatusCode; processingResult.Reason = exportResponse.ReasonPhrase; @@ -144,7 +144,7 @@ protected internal async Task ExportTopicAsync(Topic topic) if (!statusResponse.IsSuccessStatusCode) { var errorMessage = JsonSerializer.Deserialize(statusResponseContent); - logger.LogError($"Fehler bei der Statusabfrage des Datenexports für Thema {topic.TopicTitle} ({topic.Canton}): {statusResponse.StatusCode} - {errorMessage.Error}"); + logger.LogError($"{topic.TopicTitle} ({topic.Canton}): Fehler bei der Statusabfrage des Datenexports: {statusResponse.StatusCode} - {errorMessage.Error}"); processingResult.Code = statusResponse.StatusCode; processingResult.Reason = statusResponse.ReasonPhrase; @@ -155,7 +155,7 @@ protected internal async Task ExportTopicAsync(Topic topic) var statusMessage = JsonSerializer.Deserialize(statusResponseContent); if (statusMessage.Status == GeodiensteStatus.Failed) { - logger.LogError($"Fehler bei der Statusabfrage des Datenexports für Thema {topic.TopicTitle} ({topic.Canton}): {statusMessage.Info}"); + logger.LogError($"{topic.TopicTitle} ({topic.Canton}): Fehler bei der Statusabfrage des Datenexports: {statusMessage.Info}"); processingResult.Code = statusResponse.StatusCode; processingResult.Reason = statusMessage.Status.ToString(); @@ -165,7 +165,7 @@ protected internal async Task ExportTopicAsync(Topic topic) if (statusMessage.DownloadUrl == null) { - logger.LogError($"Fehler bei der Statusabfrage des Datenexports für Thema {topic.TopicTitle} ({topic.Canton}): Download-URL nicht gefunden"); + logger.LogError($"{topic.TopicTitle} ({topic.Canton}): Fehler bei der Statusabfrage des Datenexports: Download-URL nicht gefunden"); processingResult.Code = statusResponse.StatusCode; processingResult.Reason = statusMessage.Status.ToString(); @@ -181,7 +181,7 @@ protected internal async Task ExportTopicAsync(Topic topic) /// protected internal async Task RunGdalProcessingAsync() { - logger.LogInformation($"Starte GDAL-Prozessierung von Thema {topic.TopicTitle} ({topic.Canton})"); + logger.LogInformation($"{topic.TopicTitle} ({topic.Canton}): Starte GDAL-Prozessierung"); Ogr.RegisterAll(); Ogr.UseExceptions();