OP and Logging to Elasticsearch
This commit is contained in:
		
							
								
								
									
										2
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
								
							| @@ -10,7 +10,7 @@ | ||||
|             "request": "launch", | ||||
|             "preLaunchTask": "build", | ||||
|             // If you have changed target frameworks, make sure to update the program path. | ||||
|             "program": "${workspaceFolder}/SearchWebApi/bin/Debug/netcoreapp3.1/SearchWebApi.dll", | ||||
|             "program": "${workspaceFolder}/SearchWebApi/bin/Debug/net6.0/SearchWebApi.dll", | ||||
|             "args": [], | ||||
|             "cwd": "${workspaceFolder}/SearchWebApi", | ||||
|             "stopAtEntry": false, | ||||
|   | ||||
| @@ -27,6 +27,7 @@ namespace BusinessLogic.LookupLogic | ||||
|         public async Task<DataResult<List<LookupCategory>>> GetAllLookups() | ||||
|         { | ||||
|             var result = await _lookupRepo.GetAllLookups(); | ||||
|             _logger.LogInformation($"Call to GetAllLookups ended with {nameof(result.GeneralResult)}"); | ||||
|             return result; | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -29,7 +29,7 @@ namespace FwSearchApi.Controllers | ||||
|             if (result.GeneralResult != Datamodels.BusinessModels.GeneralResults.Success) { | ||||
|                 throw new System.Exception("das war wohl nix"); | ||||
|             } | ||||
|             _logger.LogInformation($"Lookups zur Verf<EFBFBD>gung gestellt von {nameof(GetAllLookups)}"); | ||||
|             _logger.LogInformation($"Lookups zur Verfügung gestellt von {nameof(GetAllLookups)}"); | ||||
|             return new JsonResult(result); | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -24,7 +24,17 @@ namespace FwSearchApi | ||||
|  | ||||
|         public static void Main(string[] args) | ||||
|         { | ||||
|             CreateHostBuilder(args).Build().Run(); | ||||
|             Log.Logger = new LoggerConfiguration() | ||||
|                 .ReadFrom.Configuration(Configuration) | ||||
|                 .CreateLogger(); | ||||
|              | ||||
|             try { | ||||
|                 CreateHostBuilder(args).Build().Run(); | ||||
|             } | ||||
|             finally  | ||||
|             { | ||||
|                 Log.CloseAndFlush(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public static IHostBuilder CreateHostBuilder(string[] args) => | ||||
| @@ -32,12 +42,15 @@ namespace FwSearchApi | ||||
|                 .ConfigureWebHostDefaults(webBuilder =>  | ||||
|                 { | ||||
|                     webBuilder.UseStartup<Startup>(); | ||||
|                     webBuilder.UseSerilog(); | ||||
|                     webBuilder.UseConfiguration(Configuration); | ||||
|                     webBuilder.SuppressStatusMessages(true); | ||||
|                 }) | ||||
|                 .ConfigureLogging((context, builder) => | ||||
|                 { | ||||
|                     builder.ClearProviders(); | ||||
|                     builder.AddConsole(); | ||||
|                     builder.AddSerilog(); | ||||
|  | ||||
|                     builder.AddOpenTelemetry(options => | ||||
|                     { | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| <Project Sdk="Microsoft.NET.Sdk.Web"> | ||||
|  | ||||
|   <PropertyGroup> | ||||
|     <TargetFramework>netcoreapp3.1</TargetFramework> | ||||
|     <TargetFramework>net6.0</TargetFramework> | ||||
|     <LangVersion>10</LangVersion> | ||||
|   </PropertyGroup> | ||||
|  | ||||
| @@ -17,7 +17,13 @@ | ||||
|     <PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.0.0-rc7" /> | ||||
|     <PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.0.0-rc7" /> | ||||
|     <PackageReference Include="Serilog.AspNetCore" Version="4.1.0" /> | ||||
|     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.2.0" /> | ||||
|     <PackageReference Include="Serilog.Enrichers.ExceptionStackTraceHash" Version="1.3.0" /> | ||||
|     <PackageReference Include="Serilog.Exceptions" Version="7.1.0" /> | ||||
|     <PackageReference Include="Serilog.Formatting.Elasticsearch" Version="8.4.1" /> | ||||
|     <PackageReference Include="Serilog.Settings.Configuration" Version="3.3.0" /> | ||||
|     <PackageReference Include="serilog.sinks.console" Version="4.0.0" /> | ||||
|     <PackageReference Include="Serilog.Sinks.ElasticSearch" Version="8.4.1" /> | ||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.2" /> | ||||
|     <PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="6.2.2" /> | ||||
|     <PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="6.2.2" /> | ||||
|   | ||||
| @@ -1,27 +1,22 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| using Microsoft.AspNetCore.Builder; | ||||
| using Microsoft.AspNetCore.Hosting; | ||||
| using Microsoft.AspNetCore.HttpsPolicy; | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| using Microsoft.Extensions.Configuration; | ||||
| using Microsoft.Extensions.DependencyInjection; | ||||
| using Microsoft.Extensions.Hosting; | ||||
| using Microsoft.Extensions.Logging; | ||||
| using Repositories; | ||||
| using Repositories.Interfaces; | ||||
|  | ||||
| using BusinessLogic.LookupLogic; | ||||
| using BusinessLogic.LookupLogic.Interfaces; | ||||
| using SearchLogic; | ||||
| using OpenTelemetry.Exporter; | ||||
| using OpenTelemetry.Instrumentation.AspNetCore; | ||||
|  | ||||
| using OpenTelemetry.Resources; | ||||
| using OpenTelemetry.Trace; | ||||
| using Elastic.Apm.AspNetCore; | ||||
| using Elastic.Apm.EntityFrameworkCore; | ||||
| using Elastic.Apm; | ||||
|  | ||||
| using Repositories; | ||||
| using Repositories.Interfaces; | ||||
|  | ||||
| using SearchLogic; | ||||
|  | ||||
| namespace FwSearchApi | ||||
| { | ||||
| @@ -50,13 +45,12 @@ namespace FwSearchApi | ||||
|             services.AddTransient<IFwMariaSearchRepo, FwMariaSearchRepo>(); | ||||
|             services.AddTransient<ISearchLogic, SearchLogic.SearchLogic>(); | ||||
|             services.AddSwaggerGen(); | ||||
|  | ||||
|         	AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);  //needed if no Security is used when calling APM Server | ||||
|             services.AddOpenTelemetryTracing((builder) => builder | ||||
|                         //.SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("TxSearchApi")) | ||||
|                         .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("TxSearchApi")) | ||||
|                         .AddAspNetCoreInstrumentation() | ||||
|                         .AddHttpClientInstrumentation() | ||||
|                         .AddEntityFrameworkCoreInstrumentation() | ||||
|                         .AddConsoleExporter() | ||||
|                         .AddEntityFrameworkCoreInstrumentation(o => o.SetDbStatementForText = true) //logging of Statement as Span | ||||
|                         .AddOtlpExporter(otlpOptions => { | ||||
|                             otlpOptions.Endpoint = new Uri("http://192.168.178.44:8200"); | ||||
|                         })); | ||||
| @@ -75,8 +69,6 @@ namespace FwSearchApi | ||||
|  | ||||
|             app.UseSwagger(); | ||||
|  | ||||
|             //app.UseElasticApm(_configuration, new EfCoreDiagnosticsSubscriber()); | ||||
|  | ||||
|             app.UseSwaggerUI(c => | ||||
|             { | ||||
|                 c.SwaggerEndpoint("/swagger/v1/swagger.json", "FeatureWerk Search API V1"); | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| { | ||||
|   "Logging": { | ||||
|     "LogLevel": { | ||||
|       "Default": "Warning", | ||||
|       "Microsoft": "Warning", | ||||
|       "Default": "Information", | ||||
|       "Microsoft": "Information", | ||||
|       "Microsoft.Hosting.Lifetime": "Information" | ||||
|     } | ||||
|   }, | ||||
| @@ -17,24 +17,28 @@ | ||||
|   }, | ||||
|   "Serilog": { | ||||
|     "MinimumLevel": { | ||||
|       "Default": "Information", | ||||
|       "Override": { | ||||
|     "Default": "Information", | ||||
|     "Override": { | ||||
|         "System": "Information", | ||||
|         "Microsoft": "Warning" | ||||
|         "Microsoft": "Information" | ||||
|       } | ||||
|     }, | ||||
|     "WriteTo": [ | ||||
|       { "Name": "File",  | ||||
|         "Args": {  | ||||
|           "path": "/tmp/FwSearchApi.log",  | ||||
|           "rollingInterval": "Day"  | ||||
|         }  | ||||
|       } | ||||
|     {  | ||||
|         "Name": "Elasticsearch", | ||||
|         "Args": { | ||||
|         "nodeUris": "http://192.168.178.44:9200", | ||||
|         "indexFormat": "TextorSearchLoggingIndex-{0:yyyy.MM}", | ||||
|         "autoRegisterTemplate": true, | ||||
|         "autoRegisterTemplateVersion": "ESv7", | ||||
|         "registerTemplateFailure": "IndexAnyway" | ||||
|         } | ||||
|     } | ||||
|     ], | ||||
|     "Enrich": ["FromLogContext", "WithMachineName"], | ||||
|     "Enrich": ["FromLogContext", "WithMachineName", "WithProcessId", "WithProcessName"], | ||||
|     "Properties": { | ||||
|       "Appname": "FeatureWerkSearchAPI", | ||||
|       "Environment": "Development" | ||||
|     "Appname": "TxSearchApi", | ||||
|     "Environment": "Development" | ||||
|     } | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1,9 +1,7 @@ | ||||
| { | ||||
|   "Logging": { | ||||
|     "LogLevel": { | ||||
|       "Default": "Information", | ||||
|       "Microsoft": "Information", | ||||
|       "Microsoft.Hosting.Lifetime": "Information" | ||||
|       "Default": "Information" | ||||
|     } | ||||
|   }, | ||||
|   "ElasticApm": | ||||
| @@ -14,5 +12,31 @@ | ||||
|       "Environment": "Development", | ||||
|       "CaptureBody": "all" | ||||
|     }, | ||||
|   "AllowedHosts": "*" | ||||
|   "AllowedHosts": "*", | ||||
|   "Serilog": { | ||||
|     "MinimumLevel": { | ||||
|     "Default": "Information", | ||||
|     "Override": { | ||||
|         "System": "Information", | ||||
|         "Microsoft": "Information" | ||||
|       } | ||||
|     }, | ||||
|     "WriteTo": [ | ||||
|     {  | ||||
|         "Name": "Elasticsearch", | ||||
|         "Args": { | ||||
|         "nodeUris": "http://192.168.178.44:9200", | ||||
|         "indexFormat": "TextorSearchLoggingIndex-{0:yyyy.MM}", | ||||
|         "autoRegisterTemplate": true, | ||||
|         "autoRegisterTemplateVersion": "ESv7", | ||||
|         "registerTemplateFailure": "IndexAnyway" | ||||
|         } | ||||
|     } | ||||
|     ], | ||||
|     "Enrich": ["FromLogContext", "WithMachineName", "WithProcessId", "WithProcessName"], | ||||
|     "Properties": { | ||||
|     "Appname": "TxSearchApi", | ||||
|     "Environment": "Production" | ||||
|     } | ||||
|   } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user